你的問題是非常廣泛,所以我只會給一個實現這一目標的高層次方式。
對於菜單系統,您可以創建兩個Div
元素,一個用於菜單,另一個用於內容。菜單div應該包含一個Action
,它調用JavaScript來替換主Div
的內容和Controller
返回的Partial View
。
在你_Layout
頁面,您可以像這樣
<body>
@Html.Action("RetrieveSideBar", "SideBar", new { area = "" })
<div id="mainScreenDiv">
@RenderBody()
</div>
</body>
RetrieveSideBar
呈現的菜單項
public class SideBarController : MyControllerBase {
/// <summary>
/// Retrieves the side bar.
/// </summary>
/// <returns></returns>
public ActionResult RetrieveSideBar() {
var menuItems = new List<MenuItem>();
return PartialView("_SideBar", MenuItems());
}
private List<MenuItem> NotAuthenticatedMenuItems() {
var menuItems = new List<MenuItem>();
menuItems.Add(new MenuItem() { Title = "Register Firm", ActionUrl = Url.Action("Create", "FirmPreRegistration") });
return menuItems;
}
}
哪裏MenuItem
是
public class MenuItem {
public string Title { get; set; }
public string ActionUrl { get; set; }
}
_SideBar
呈現菜單如下
@model List<MenuItem>
<ul class="nav nav-sidebar">
@foreach (var menuItem in Model) {
<li class="text-info leftMenuHeading ">
<a href="#" onclick="NavigateTo('@menuItem.ActionUrl')">
<span>@menuItem.Title</span>
</a>
</li>
}
</ul>
注意,點擊一個menu item
電話NavigateTo
被定義爲「_layout頁面如下
function NavigateTo(view) {
$.ajax({
url: view,
type: "GET",
cache: false,
success: function(data) {
$('#mainScreenDiv').html(data);
});
}
這將創建一個基於Ajax的導航系統,該系統將與頁面替換內容導航頁面,請注意Action
方法需要返回PartialView
否則_Layout
再次呈現。
來源
2015-07-28 08:46:52
3dd
只需觀察構建在asp.net MVC上的開源CMS。你的問題的答案都可以在那裏得到。 。 –
這個問題*方式*太寬泛,無法在這裏以這種格式回答。 – Claies
我知道這是相當廣泛的。我只是在尋找正確的方向來推動學習過程。所有的意見都讚賞 –