我是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”。是否可以实现此功能?
答案 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>