【发布时间】:2014-08-26 04:41:07
【问题描述】:
我有两种观点,一种主人对另一种。在某些情况下,当子视图重新加载时,我需要父视图保持不变。 AJAX 是唯一的选择,还是有其他方法?
附:即使唯一的选择是 AJAX,如果有人能展示在 ASP.NET MVC 中采取的步骤,我将非常感激。
【问题讨论】:
-
如果您不想刷新页面,AJAX 确实是更新页面位的唯一方法。
标签: asp.net-mvc master-pages reload
我有两种观点,一种主人对另一种。在某些情况下,当子视图重新加载时,我需要父视图保持不变。 AJAX 是唯一的选择,还是有其他方法?
附:即使唯一的选择是 AJAX,如果有人能展示在 ASP.NET MVC 中采取的步骤,我将非常感激。
【问题讨论】:
标签: asp.net-mvc master-pages reload
是的,只有 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")');
【讨论】:
使用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);
}
【讨论】: