RAZOR语法构建菜单

时间:2013-07-25 11:26:58

标签: asp.net-mvc-4 razor

我第一次进入MVC4和Razor: 我正在尝试动态构建菜单:

 @foreach (var menu in Model.Menu)
 {
<li>
 Html.ActionLink("@menu.Name", "@menu.View", "@menu.Controller");
</li>
}

Menu类有效,但输出不是文字,而是字符串:

  

Html.ActionLink(“主页”,“索引”,“主页”); Html.ActionLink( “菜单1”,   “索引”,“Menu1”); Html.ActionLink(“Menu2”,“Index”,“Menu2”);

我需要更改输出实际文字?

编辑:我用它作为上述基础:

<li>@Html.ActionLink("Menu1", "Index", "Menu1")</li>

菜单类:

 public class MenuItem
    {
        public string Name { get; set; }
        public bool isActive { get; set; }
        public string Controller { get; set; }
        public string View { get; set; }
    }

2 个答案:

答案 0 :(得分:1)

试试这个,因为你没有在@之前设置Html.ActionLink它将其视为文本

@foreach (var menu in Model.Menu)
{
    <li>
        @Html.ActionLink((string)menu.Name, (string)menu.View, (string)menu.Controller)
    </li>
}

编辑:只需将其投放到string或您可以尝试

@LinkExtensions.ActionLink(Html, menu.Name, menu.View, menu.Controller)

答案 1 :(得分:1)

您需要在Html.ActionLink 之前添加@符号, 在结尾处删除分号:

@foreach (var menu in Model.Menu)
{
    <li>
        @Html.ActionLink(menu.Name, menu.View, menu.Controller)
    </li>
}