如何加载视图而不重新加载MVC 4中的布局?

Vin*_*inu 4 ajax asp.net-mvc jquery asp.net-mvc-4

我正在使用ASP.NET MVC 4.我有一个稍微重一点的"导航菜单"和"标题",这对所有页面都很常见.

我在布局中创建了所有菜单和标题内容,但在每个导航中,浏览器重新加载菜单.有没有可能的方法来防止重新加载布局页面?

我正在使用_ViewStart.cshtml将视图与布局绑定.

Mur*_*san 8

假设这将是您呈现的HTML菜单

   <ul class="menu">
      <li><a href="/about/index">About</a></li>
      <li><a href="/contact/index">Contact</a></li>
   </ul>
   <div id="page-content">
   </div>
Run Code Online (Sandbox Code Playgroud)

您的视图页面将在以下结构中创建为部分视图

About/index.cshtml
Contact/index.cshtml
Run Code Online (Sandbox Code Playgroud)

注意: MVC部分视图不会有<html> or <head> or <body>,它只会有内容,类似于ASP.Net中的用户控件.您cannot use @section in partial views

现在您只需要使用ajax加载此部分内容,并使用javascript将其放置在主页占位符div中以获取页面内容

$(document).ready(function(){
$("ul.menu a").click(function(e){
  e.preventDefault(); // prevent default link button redirect behaviour     
  var url=$(this).attr("href");
  $('#page-content').load(url);
 });
});
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助!

  • 但是,网址保持不变。 (2认同)