1

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が含まれており、そのmenuTextnullであることを確認しました。ただし、コンストラクターでオブジェクトを割り当てるため、 menuItemsにはアイテムがあります。

  1. menuTextを初期化して値を割り当てることができないのはなぜですか?
  2. 最初の2つでリソース文字列を表示できても、Model.menuTextがnullで、何も表示されないのはなぜですか?@ Html.XXX@Modelのモデルの違いは何ですか?
4

1 に答える 1

1

@Model.menuTextプロパティ内に格納されている生の文字列値を取得しmenuTextます。属性は無視されます。

を使用すると、プロパティLabelForDisplay属性が調べられます。ローカライズされた文字列は、プロパティではなく属性に格納されます。

Modelオブジェクト/クラスは、表示用の情報を格納するために使用するのではなく(これViewDataが目的です)、クライアントからサーバーに送信されるラウンドトリップデータにのみ使用する必要があることに注意してください。

于 2012-09-28T02:58:34.393 に答える