RenderPartial是异步还是有点类似于jquery ajax调用?

时间:2015-07-01 09:11:04

标签: c# asp.net-mvc renderpartial

我只是好奇并且同时混淆了MVC(MVC5)中的RenderPartial与使用jQuery的ajax调用相同,还是简单地说是RenderPartial Async?

1 个答案:

答案 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}}方法,该方法将带来注释并仅呈现注释局部视图,而不是整个页面。

进一步阅读:

渲染部分 http://www.arrangeactassert.com/when-to-use-html-renderpartial-and-html-renderaction-in-asp-net-mvc-razor-views/(甜蜜图表)

Ajax http://kyleschaeffer.com/development/the-perfect-jquery-ajax-request/