部分视图旨在用于可在整个网站的许多地方使用的可重复使用的视图。
如果我们通过 ajax 加载它,我发现这非常有用。
以下是示例。这也可以避免全屏刷新
_Layout.cshtml(或任何会加载部分页面的视图页面)
<div>
<h2>This is Partial View content</h2>
<div id="content"></div>
</div>
<script>
$(function () {
$("#content").html("Loading...");
setTimeout(function () { LoadPartialView(); }, 5000);
});
function LoadPartialView() {
$.ajax({
type: "GET",
url: '@Url.Action("GetPartialView", "Home")',
dataType: "html",
success: function (data) {
$("#content").empty();
$("#content").html(data);
$("#content").fadeIn('slow');
},
error: function (data) {
$("#content").empty();
}
});
};
</script>
型号
public class TestModel
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
控制器的操作
[HttpPost]
public PartialViewResult GetPartialView()
{
TestModel model = new TestModel();
model.Name="SomeName";
model.Address="Somewhere";
model.Age=25;
return PartialView("_PartialTestPage", model);
}
更新
为避免硬编码访问部分视图,请使用将重定向到主视图的重载操作方法。像这样的。
[HttpGet]
[ActionName("MyOverloadedName")]
public ActionResult GetPartialView()
{
return RedirectToAction("Index", "Home"); //redirect to the main view
}
您可以通过设置 HttpGet/HttpPost 来创建两个不同的同名操作方法。
在此处查看更多替代解决方案Can you overload controller methods in ASP.NET MVC?。