【发布时间】:2016-11-05 19:20:33
【问题描述】:
在我的 MVC 应用程序中,我不希望每次选择视图时都重新加载布局页面。如果可以使用 ajax 加载视图以保持良好和快速,并允许我保留某些在您四处移动时被清除的界面状态,那就太好了。
我最初的方法是向 _Layout.cshtml 添加一些 ajax,然后在请求视图时将该请求传递给将抓取该页面的控制器方法。然而,我最终所做的只是再次返回整个视图。
这是我到目前为止的代码,我是在正确的轨道上还是这完全错误?
布局 Ajax 脚本
<script>
$(function () {
var content = document.getElementById('content');
//When a user selects a link, pass the data attribute and
//use it to construct the url
$('#sidebar a').on("click", function () {
var page = $(this).data('page');
console.log("Data Attrib : " + page);
$.ajax({
type: 'GET',
url: '@Url.Content("~/Home/")' + page,
success: function (data) {
$('#content').html(data);
console.log("Success");
},
error: function (xhr, ajaxOptions, thrownError) {
console.log("Error: " + thrownError);
}
})
})
});
</script>
正如我所说,这种工作方式,但它并不完美,因为它将整个页面返回到包括布局在内的内容区域,理想情况下我只想要核心视图数据。
【问题讨论】:
-
把它放在你不想包含布局的视图顶部:
@{Layout = null;} -
另一种选择是使用部分视图并检索它们 - 它们不使用布局模板,并且旨在插入到另一个页面中。
标签: ajax asp.net-mvc