ASP.NETMVC4アプリケーションを使用しています。メニュー項目を含むビューモデルを作成しました。ページ内の言語をリソースファイルで切り替えることができます。
#region Properties
[Display(Name = "MenuText", ResourceType = typeof(App.App_Resources.Menu))]
public string menuText { get; set; }
public List<MenuItem> menuItems { get; set; }
#endregion
ただし、このリソース文字列を.cshtmlファイルで取得したいので、次のようにしてみます
@model App.Models.MenuViewModel
@Html.LabelFor(model => model.menuText) <- Success
@Html.DisplayForModel("menuText") <- Success
@Model.menuText <- Fail
ブレークポイントを挿入したところ、ModelにmenuTextという名前のプロパティが含まれているが、値がnullであることがわかりました。また、 HtmlにもプロパティModelが含まれており、そのmenuTextもnullであることを確認しました。ただし、コンストラクターでオブジェクトを割り当てるため、 menuItemsにはアイテムがあります。
- menuTextを初期化して値を割り当てることができないのはなぜですか?
- 最初の2つでリソース文字列を表示できても、Model.menuTextがnullで、何も表示されないのはなぜですか?@ Html.XXXと@Modelのモデルの違いは何ですか?