我只是好奇并且同时混淆了MVC(MVC5)中的RenderPartial与使用jQuery的ajax调用相同,还是简单地说是RenderPartial Async?
答案 0 :(得分:1)
没有。 RenderPartial是同步的。
但是,如果您尝试获取同步,异步行为,则可以使用ajax调用同步/异步操作。
'如果MVC中的RenderPartial(MVC5)与使用jQuery的Ajax调用相同'
^让我解释一下。
例如,您使用RenderPartial呈现帖子的评论区域。我们可以不时地说30秒,你可以使用ajax调用来呈现最新的评论,并将渲染的html带回客户端。然后,您将使用响应中的服务器(ajax成功回调)替换您的注释区域html。
Par例子:
@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调用LiveController/BringLastComments
的{{1}}方法,该方法将带来注释并仅呈现注释局部视图,而不是整个页面。
进一步阅读:
Ajax http://kyleschaeffer.com/development/the-perfect-jquery-ajax-request/