RenderPartial 是异步的还是有点类似于 jquery ajax 调用?
Is RenderPartial async or is somewhat similar to jquery ajax call?
我很好奇,同时也很困惑 MVC(MVC5) 中的 RenderPartial 是否与使用 jQuery 的 ajax 调用相同,或者简单地说是 RenderPartial Async?
没有。 RenderPartial 是同步的。
但是,如果您尝试获得同步、异步行为,则可以使用 ajax 调用 sync/async 操作。
'if RenderPartial in MVC(MVC5) is the same as an Ajax call using jQuery'
^让我解释一下。
例如,您正在使用 RenderPartial 渲染 post 的评论区域。有时,比方说 30 秒,您可以使用 ajax 调用来呈现最新的评论并将呈现的 html 带回客户端。然后,您将在响应(ajax 成功回调)中将您的评论区域 html 替换为您从服务器收到的内容。
面值示例:
@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);}
^ 这是您的 post 页面 razor 视图,带有用于评论区域的 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
for PostId = 3
将带来评论并仅呈现评论部分视图,而不是整个页面。
此处进一步阅读:
Ajax http://kyleschaeffer.com/development/the-perfect-jquery-ajax-request/
我很好奇,同时也很困惑 MVC(MVC5) 中的 RenderPartial 是否与使用 jQuery 的 ajax 调用相同,或者简单地说是 RenderPartial Async?
没有。 RenderPartial 是同步的。
但是,如果您尝试获得同步、异步行为,则可以使用 ajax 调用 sync/async 操作。
'if RenderPartial in MVC(MVC5) is the same as an Ajax call using jQuery'
^让我解释一下。
例如,您正在使用 RenderPartial 渲染 post 的评论区域。有时,比方说 30 秒,您可以使用 ajax 调用来呈现最新的评论并将呈现的 html 带回客户端。然后,您将在响应(ajax 成功回调)中将您的评论区域 html 替换为您从服务器收到的内容。
面值示例:
@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);}
^ 这是您的 post 页面 razor 视图,带有用于评论区域的 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
for PostId = 3
将带来评论并仅呈现评论部分视图,而不是整个页面。
此处进一步阅读:
Ajax http://kyleschaeffer.com/development/the-perfect-jquery-ajax-request/