从ASP.NET MVC中的另一个局部视图更新局部视图,而不更新所有视图

时间:2014-04-22 11:38:11

标签: asp.net-mvc vb.net razor partial-views

我有两个部分视图,左边是菜单,右边是内容。

enter image description here

当我点击"链接1"时,我想切换"内容"部分视图中的区域" PartialViewContent1"到" PartialViewContent2"。

就代码而言,我实际上设法做到了这一点:

文件Index.vbhtml

<body>
<article>
      <section>
           <p>@Html.Action("Menu", "Menu")</p>
      </section>
 </article>
<aside>

 @Select Case Convert.ToString(Model)
     Case "Menu2"
         @Html.Action("PartialViewContent2", "PartialViewContent2")
     Case "Menu3"
         @Html.Action("PartialViewContent3", "PartialViewContent3")
     Case Else
         @Html.Action("PartialViewContent1", "PartialViewContent1")
 End Select

 </aside>

文件PartialViewMenu.vbhtml

<ul>
<li>
@Html.ActionLink("Link 1", "Link1", "Home")
</li>
<li>
@Html.ActionLink("Link 2", "Link2", "Home")
</li>
<li>
@Html.ActionLink("Link 3", "Link3", "Home")
</li>

使用此架构,每个视图(以及显示的局部视图)都会刷新。

我担心这种行为不符合人体工程学,在性能方面也不是很有效。是否有更新内容而不是菜单的方法(如果有页脚或标题,则更新视图的其余部分)?

1 个答案:

答案 0 :(得分:0)

我终于找到了如何做到这一点。

使用Ajax的简单jQuery代码可以解决这个问题:

$(function() {

  $('#link1').click(function(){
    $.ajax({
      url: this.href,
      dataType: "script",
      success: function(result) {
        $("#container").html(result);
      }
    });
  });     

  e.preventDefault();
  return false;
});


});