如何使用MVC4在局部视图中调用HtmlHelper方法 - c#

我是Mvc4的新手,基本上我想创建具有菜单和子菜单的动态选项卡。

这是我的Htmlhelper类:

namespace DBMvc.Htmlhlpr
{
public static class HtmlHelperExtension
{
    public static String ParentMenus(this HtmlHelper html, IEnumerable<menu> Menu)
    {
        string htmlOutput = string.Empty;
        if (Menu.Count() > 0)
        {
            htmlOutput += "<ul class='sf-menu'>";
            var Mainmenu = from mainMenu in Menu where mainMenu.Catid == null select mainMenu;
            foreach (menu m in Mainmenu)
            {
                htmlOutput += "<li>";
                htmlOutput += LinkExtensions.ActionLink(html, m.Depname, null);
                htmlOutput += SubMenus(html, Menu, m.Depid);
                htmlOutput += "</li>";

            }
            htmlOutput += "</ul>";
        }
        return htmlOutput;
    }
    private static string SubMenus(this HtmlHelper html, IEnumerable<menu> SubMenu, int Catid)
    {
        string htmlOutput = string.Empty;
        var subMenu = from sm in SubMenu where sm.Depid ==Catid orderby sm.cats select sm;
        if (subMenu.Count() > 0)
        {
            htmlOutput += "<ul>";
            foreach (menu m in subMenu)
            {
                htmlOutput += "<li>";
                htmlOutput += LinkExtensions.ActionLink(html, m.Depname, null);
                htmlOutput += SubMenus(html, SubMenu, m.Catid);
                htmlOutput += "</li>";
            }
            htmlOutput += "</ul>";
        }
        return htmlOutput;}}}}

我的控制器是:

public class FrontController : Controller
{
   // MenuEntities MEnt = new MenuEntities();
    NewDatabaseEntities Db = new NewDatabaseEntities();
   // menu MEnt  = new menu();
   // [ChildActionOnly]
    public ActionResult Menu()
    {
        var mMenu = Db.Dep_Table.ToList();
        return PartialView(mMenu)
    }
}

在部分视图中,我想使用@ Html.Raw来调用htmlhelper mthod“ ParentMenus”。我不知道该怎么做。

参考方案

两件事情:

我建议更改您的HTML帮助器以返回包含HTML的HtmlString。然后,您可以避免使用@Html.Raw(),这几乎总是一个坏习惯(尽管它有其用途)。
在Razor视图页面(CSHTML文件)中,在文件顶部放置@using DBMvc.Htmlhlpr以确保已导入助手名称空间。然后使用@Html.ParentMenus(...)来调用助手。

项#1并非绝对必要,但这是所有内置HTML帮助器的工作,通常是一种好习惯。

如果不是,请指出您遇到的错误(如果有)。

ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…

asp.net:treeview-显示文本框是否选中? - c#

我需要向用户显示字符串列表。用户可以选择多个字符串。如果选择了一组特定的字符串,则每个字符串旁边都会出现一个文本框。我想做的是向用户显示一个TREEVIEW,每个节点都是字符串之一。他们将通过选中复选框来选择所需的每个字符串。问题:如果用户选择特定的复选框,则我需要一个文本框来显示用户的GET输入。问题:如何从用户使用树形视图获取字符串输入? 参考方案 Tr…

MVC C#TempData - c#

有人可以解释一下MVC中TempData的目的。我了解它的行为类似于ViewBag,但除此之外它还有什么作用。 参考方案 TempData应该是一个短暂的实例,您应该 仅在当前和后续请求中使用它!以来 TempData以这种方式工作,您需要确定下一步 要求,并且重定向到另一个视图是您唯一的时间 可以保证这一点。因此,唯一使用TempData的方案 在重定向时…

asp.net oledbcommand返回所有行 - c#

我正在使用Oledbconnection连接到Microsoft Access数据库,并且正在使用OleDbCommand检索一些信息。我在数据库中有一个名为retrieveInfo的查询,该查询检索3行数据。字段中有一些重复项,但是应该是这样。我的数据如下所示: Name Email A [email protected] B [email protected] B C@gmai…

当浏览器在MVC中关闭时,阻止会话过期 - c#

我遇到会话问题在关闭浏览器后,我的会话将过期,并且在重新打开浏览器后,我必须再次登录。我不想使我的会话在浏览器关闭时过期。我在我的web.config文件中使用它: <authentication> <forms loginUrl="~/account/login" name="astroswamig"…