.NET MVC自定义帮助程序无法在布局中正确呈现

时间:2011-08-01 23:20:12

标签: asp.net asp.net-mvc razor

我已经阅读了所有可以找到的演练和示例,但我无法弄清楚缺少什么。

我的助手......

namespace MVCShop.Helpers
{
    public class RenderNav
    {
        public static MvcHtmlString GetCategoryNav(string store)
        {
            MVCShopEntities db = new MVCShopEntities();

            IEnumerable<Category> categories = db.Categories.Where(c => c.Store.Name == store);
            StringBuilder sb = new StringBuilder();

            foreach (Category cat in categories)
            {
                sb.AppendFormat("<ul id='menu'><li>{0}</li></ul>", cat.Name);
            }

            return new MvcHtmlString(sb.ToString());
        }
    }
}

在我的_Layout中,我添加了这一行......

    <nav>
            @{ RenderNav.GetCategoryNav(ViewContext.RouteData.Values["storeName"].ToString()); }
    </nav>

我已经完成了代码。函数正确创建并返回字符串。一切都在构建,并且没有运行时错误。菜单html根本没有显示在页面上。我很难过。

1 个答案:

答案 0 :(得分:1)

你不是这个值,你只是调用方法。
生成该值,然后正常忽略

删除括号(用于代码块但不输出任何内容)和分号:

<nav>
    @RenderNav.GetCategoryNav(ViewContext.RouteData.Values["storeName"].ToString())
</nav>

这会告诉Razor 输出方法结果并显示导航。