是RenderPartial异步的,或者有点类似于jquery ajax调用
本文关键字:类似于 jquery ajax 调用 或者 RenderPartial 异步 | 更新日期: 2023-09-27 18:00:34
我只是很好奇,同时也很困惑MVC中的RenderPartial(MVC5)是否与使用jQuery的ajax调用相同,或者简单地说是RenderPartialAsync?
否。RenderPartial是同步的。
但是,如果您试图获得同步、异步行为,则可以使用ajax调用来执行同步/异步操作。
"如果MVC(MVC5)中的RenderPartial与使用jQuery的Ajax调用相同"
^让我解释一下。
例如,您正在使用RenderPartial来渲染帖子的评论区域。有时,比如说30秒,您可以使用ajax调用,它将呈现最新的注释,并将呈现的html带回客户端。然后,您将把您的评论区html替换为您在响应中从服务器收到的内容(ajax成功回调)。
例如:
@model WhenToUseRenderActionAndRenderPartial.Models.ShowPostViewModel
@{
ViewBag.Title = Model.Post.Title;
}
<section>
<article>
<header>
<h1>@Model.Post.Title</h1>
Posted on | <time datetime="@Model.Post.DatePublished.ToString("s")">
@Model.Post.DatePublished.ToLongDateString()
</time> | @Model.Comments.Count() Comments
</header>
@Html.Raw(Model.Post.Content)
</article>
</section>
@{Html.RenderPartial("_Comments", Model.Comments);}
^这是你的帖子页面剃刀视图,有一个RenderPartial评论区。
@model IEnumerable<WhenToUseRenderActionAndRenderPartial.Models.Comment>
<section>
<header>
<h3>
Comments</h3>
</header>
@foreach (var comment in Model)
{
<article>
<header>
@comment.Author on
<time datetime="@comment.DateCreated.ToString("s") ">
@comment.DateCreated.ToLongDateString()
</time>
</header>
<img alt="@comment.Author" src=@comment.ImageUrl />
<p>
@comment.Content
</p>
</article>
}
</section>
^这是你的评论区。
您可以使用第二个视图实时呈现评论(30秒一次)。Ajax调用PostId = 3
的方法LiveController/BringLastComments
,该方法将带来注释并仅呈现注释的部分视图,而不是整个页面。
在这里进一步阅读:
渲染部分http://www.arrangeactassert.com/when-to-use-html-renderpartial-and-html-renderaction-in-asp-net-mvc-razor-views/(甜蜜的图表)
Ajaxhttp://kyleschaeffer.com/development/the-perfect-jquery-ajax-request/