如何只重新加载内容页面(不重新加载treemenu)

时间:2012-01-27 15:42:40

标签: jquery asp.net-mvc model-view-controller reload

我是ASP MVC的新手,我想知道是否可以在不重新加载树状菜单(位于页面左侧)的情况下显示内容页面。 我的_layout.cshatml文件看起来那样

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
            <nav>
                 @{ Html.RenderAction("TopMenu", "Menu"); }
            </nav>
        </header>

          <div id="categories">
        @{Html.RenderAction("TreeMenu", "Tree");}
    </div>
    <div id="content">
        @RenderBody()
    </div>
    </div>
</body>
</html>

主页面(负责渲染体)看起来像

@{
    ViewBag.Title = "Home Page";
}
<a href='javascript:getView();'>Get Partial View</a>
 <script type="text/javascript">
     function getView() {
         $('#divResult').load("@Url.Action("GridViewPartial", "Home")");
     }
 </script>
 <div id='divResult'>
 </div>

我希望能够在用户单击树上的节点后仅对内容div进行重新加载。有可能吗?我知道有一个jQuery函数加载可以将数据注入div。但是我不知道如何从树的局部视图中引用div“divResult”。是否可以实现此功能?

1 个答案:

答案 0 :(得分:1)

加载内容的javascript代码应位于主布局视图中,而不是您要加载的部分视图中。

所以,使用JavaScript代码的主要布局:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>

    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
            <nav>
                 @{ Html.RenderAction("TopMenu", "Menu"); }
            </nav>
        </header>

          <div id="categories">
        @{Html.RenderAction("TreeMenu", "Tree");}
    </div>
        <div id="content">
            @RenderBody()
        </div>
    </div>
    <script type="text/javascript">
        $(doument).ready(function(){
            $('nav').click(function(){ // click on navigation, you should narrow it down to some id
                $('#content').load("@Url.Action("GridViewPartial", "Home")"); // replaces content div's inner html with loaded partial
            });
        });
    </script>
</body>
</html>