0

私は初めて MVC4 と Razor に浸っています: メニューを動的に構築しようとしています:

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

Menu クラスは機能しますが、出力はリテラルではなく文字列になります。

Html.ActionLink("ホーム", "インデックス", "ホーム"); Html.ActionLink("Menu1", "Index", "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; }
    }
4

2 に答える 2

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)
于 2013-07-25T11:32:10.530 に答える
1

前に @ 記号を追加し、最後にセミコロンを削除するHtml.ActionLink 必要があります。

@foreach (var menu in Model.Menu)
{
    <li>
        @Html.ActionLink(menu.Name, menu.View, menu.Controller)
    </li>
}
于 2013-07-25T11:35:28.317 に答える