我有两个观点,一个掌握到另一个。在某些情况下,当子视图重新加载时,我需要父视图保持不变。 AJAX是唯一的选择,还是有其他方法可以做到这一点?
P.S。即使有唯一的选择是AJAX,如果有人能够展示采用ASP.NET MVC的步骤,我真的很感激。
答案 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);
}