c# - 在 ASP.Net MVC3 中使用 HtmlHelper 和分页呈现 View

标签 c# css asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

你好,在我的元素中,我必须使用 ASP.NET MVC3 Razor 实现动态菜单......我的菜单结构是

1.用户管理 1.1创建新用户 1.2创建新 Angular 色 2.账户 2.1收入 2.2费用

对于上述结构,我有一个布局页面(带有 css 和脚本)并且工作正常。 问题是在我的 View 页面菜单中没有以正确的格式显示 .有两个 HtmlHelperExtensions,一个用于主菜单,另一个用于子菜单。两者都在 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>

    }

How to call sub menu dynamically when parent menu is called.Here am explicitly assigning the Main Menu Id as "3" to Submenu.?

How to connect parent Menus Html helper with submenu?

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>

最佳答案

您可以像这样循环菜单项并传入 MainMenuId:

@foreach(var menuItem in Model)
{

    <div>
    @Html.Raw(@Html.ParentMenus(menuItem))
    </div>
    <div>
    @Html.Raw(@Html.SubMenu(menuItem, menuItem.MainMenuId))
    </div>

}

关于c# - 在 ASP.Net MVC3 中使用 HtmlHelper 和分页呈现 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20949094/

相关文章:

php - 如何返回多个值?

c# - 如何更改 Windows Azure 网站的信任级别?

javascript - 获取当前图像大小

html - bootstrap col 中的拟合条出现问题

c# - 计算两个日期之间的差异(天数)?

c# - UWP 继承 self 的用户控件

asp.net-mvc - 将.html文件呈现为ASP.NET MVC中的 View

javascript - Blueimp jQuery 文件上传和我的异常(exception)

c# - 具有公共(public)字段的不同类之间的 IEnumerable.Except()

c# - 使用.NET Remoting时如何捕获未处理的异常