【问题标题】:Is it possible to prevent parent view from reloading是否可以防止父视图重新加载
【发布时间】:2014-08-26 04:41:07
【问题描述】:

我有两种观点,一种主人对另一种。在某些情况下,当子视图重新加载时,我需要父视图保持不变。 AJAX 是唯一的选择,还是有其他方法?

附:即使唯一的选择是 AJAX,如果有人能展示在 ASP.NET MVC 中采取的步骤,我将非常感激。

【问题讨论】:

  • 如果您不想刷新页面,AJAX 确实是更新页面位的唯一方法。

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


【解决方案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")');

【讨论】:

  • 局部渲染是指从控制器端,还是直接在视图内部?我的意思是,我是否在操作方法中部分渲染?如果您也提供操作方法内容的示例代码,那就太棒了。
  • 您有一个视图(可以说是一个 cshtml),您可以在其中呈现“子视图”。假设您的页面中有 3 个部分。每个人几乎都可以独自生活。创建 3 个局部视图。如果我所说的对您来说听起来很新鲜,请阅读此内容:arrangeactassert.com/…
【解决方案2】:

使用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);
    }

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2010-12-20
    相关资源
    最近更新 更多