【问题标题】:Is RenderPartial async or is somewhat similar to jquery ajax call?RenderPartial 是异步的还是有点类似于 jquery ajax 调用?
【发布时间】:2015-07-01 09:11:03
【问题描述】:

我很好奇,同时也很困惑 MVC(MVC5) 中的 RenderPartial 是否与使用 jQuery 的 ajax 调用相同,或者简单地说是 RenderPartial Async?

【问题讨论】:

  • if RenderPartial in MVC(MVC5) is the same as an Ajax call using jquery 不。AJAX 调用是我们从客户端到服务器的操作。 RenderPartial 将在页面渲染之前在服务器上执行。
  • RenderPartial 和 ajax 调用不一样..RenderPartial 在将其发送到客户端之前呈现部分视图以进行查看..而 ajax 允许客户端的页面异步更新与调用一样多..跨度>

标签: c# asp.net-mvc renderpartial


【解决方案1】:

没有。 RenderPartial 是同步的。

但是,如果您尝试获得同步、异步行为,则可以使用 ajax 调用来进行同步/异步操作。

'如果 MVC(MVC5) 中的 RenderPartial 与使用 jQuery 的 Ajax 调用相同'

^ 让我解释一下。

例如,您正在使用 RenderPartial 来渲染帖子的 cmets 区域。有时,假设 30 秒,您可以使用 ajax 调用来呈现最新的 cmets 并将呈现的 html 带回客户端。然后,您将用您在响应中从服务器收到的内容替换您的 cmets 区域 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);}

^ 这是您的帖子页面剃刀视图,其中有一个用于 cmets 区域的 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>

^ 这是您对 cme​​ts 区域的透视图。

您可以使用第二个视图实时渲染 cmets(30 秒一次)。 Ajax 调用 LiveController/BringLastCommentsfor PostId = 3 方法,这将带来 cmets 并仅呈现 cmets 部分视图,而不是整个页面。

这里有一些进一步的阅读:

部分渲染 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多