是否可以防止父视图重新加载

时间:2014-08-26 04:41:08

标签: asp.net-mvc master-pages reload

我有两个观点,一个掌握到另一个。在某些情况下,当子视图重新加载时,我需要父视图保持不变。 AJAX是唯一的选择,还是有其他方法可以做到这一点?

P.S。即使有唯一的选择是AJAX,如果有人能够展示采用ASP.NET MVC的步骤,我真的很感激。

2 个答案:

答案 0 :(得分:1)

是的,只有Ajax调用才会阻止您加载整个页面。

让我们说这是你的页面方案:

<div id="master">
   <div id="section1">
     // use render partial to render this
   </div>

    <div id="section2">
     // use render partial to render this
    </div>
</div>

要重新加载某个部分,您可以使用JQuery.load仅重新加载:

$("#section2").load('@Url.Action("Action", "Controller")');

答案 1 :(得分:1)

使用Ajax表单是我喜欢做类似的事情,因为您可以使用UpdateTargetId呈现部分视图,并且您可以轻松使用AntiForgeryToken功能

查看:

   <div>
        @using (Ajax.BeginForm("MyAction", new { id = @Model.MyData }, new AjaxOptions
        {
            InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,
            HttpMethod = "POST",
            UpdateTargetId = "renderView"
        }))
        {
            @Html.AntiForgeryToken()
            <input type="submit" name="submit" value="Submit" />
        }
   </div>

    // This will get populated with the partial
    <div id="renderView" />

控制器:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> MyAction(int id)
    {
       var output = new MyModel{ .....};

       return PartialView(output);
    }