1
你好用的HtmlHelper和部分頁面視圖中的項目中,我實現使用ASP.NET MVC3剃刀..My菜單結構動態菜單是呈現在ASP.Net MVC3
1.UserManagement 1.1Create新用戶 1.2Create新角色 2.Accounts 2.1Income 2.2Expense
對於上述結構我有一個頁面佈局(CSS和腳本)和它的工作的罰款。 的問題是,在我看來,頁面菜單不正確的格式 顯示。有兩種HtmlHelperExtensions一個是主菜單和其他爲副menu.Both在Menus.cshtml的部分頁面初始化
@model IEnumerable<Elixir.Models.Menus>
<div>
@Html.Raw(@Html.ParentMenus(Model))
</div>
<div>
@Html.Raw(@Html.SubMenu(Model,3))
</div>
更新部分代碼代碼
@model IEnumerable<Elixir.Models.Menus>
@Html.Raw(@Html.ParentMenus(Model))
@foreach (var menuitem in Model)
{
<div>
@Html.Raw(@Html.ParentMenus(Model))
</div>
<div>
@if (menuitem.MainMenuId == menuitem.MenuId)
{
int ab = Convert.ToInt32(menuitem.MainMenuId);
@Html.Raw(@Html.SubMenu(Model, ab))
}
</div>
}
如何調用子菜單時動態父菜單called.Here是 明確將主菜單ID分配爲子菜單中的「3」。
如何連接父菜單Html助手與子菜單?
的HtmlHelper擴展代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using Elixir.Models;
namespace Elixir.HtmlHelpers
{
public static class HtmlHelperExtensions
{
public static string ParentMenus(this HtmlHelper html,IEnumerable<Elixir.Models.Menus> menu)
{
string htmloutput=string.Empty;
if (menu.Count() > 0)
{
htmloutput += "<ul class='side-navigation accordion' id='nav-accordion'>";
var MainMenu = from mainMenu in menu where mainMenu.MainMenuId == null orderby mainMenu.MenuOrder select mainMenu;
foreach (Menus m in MainMenu)
{
htmloutput += "<li>";
htmloutput += "<li><i class='icon-home'>";
htmloutput += LinkExtensions.ActionLink(html, m.LinkName, m.ActionName, m.ControllerName);
htmloutput += "</li>";
htmloutput += "</li></i>";
}
htmloutput += "</ul>";
}
return htmloutput;
}
public static string SubMenu(this HtmlHelper html, IEnumerable<Menus> SubMenu, int MenuId)
{
string htmlOutput = string.Empty;
if (SubMenu.Count() > 0)
{
htmlOutput += "<ul class='side-navigation accordion' id='nav-accordion'>";
var subMenu = from SMenu in SubMenu where SMenu.MainMenuId == MenuId orderby SMenu.MenuOrder select SMenu;
foreach (Menus m in subMenu)
{
htmlOutput += "<li>";
htmlOutput += "<li><i class='icon-home'>";
htmlOutput += LinkExtensions.ActionLink(html, m.LinkName, m.ActionName, m.ControllerName);
htmlOutput += "</li>";
htmlOutput += "</li></i>";
}
htmlOutput += "</ul>";
}
return htmlOutput;
}
}
}
我的索引查看代碼
@{
ViewBag.Title = "Elixir ERP V1.0 Beta";
Layout = "~/Views/Shared/_LayoutUser.cshtml";
}
<div class="main-container">
<div class="main-wrapper">
<div class="scroll-top">
<a href="#" class="tip-top" title="Go Top"><i class="icon-arrow-up"></i></a>
</div>
<div class="left-bar merge-left">
<!-- SEARCH BAR -->
<!-- LEFT NAV -->
@section leftnav{
<div class="left-nav">
@Html.Action("Menus");
</div>
}
</div>
</div>
<div class="container">
</div>
</div>
您好,我正在爲上述解決方案執行處理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子請求時出錯。 – Nidheesh
當您將原始問題的值3硬編碼時,它是否工作?這可能是查找菜單操作的數據或問題。 – hutchonoid
是的,現在我已經用你的邏輯更新了問題,現在沒有錯誤,但菜單同時顯示所有字段值。 – Nidheesh