0

ViewData.Modelで使用されているDisplayNameAttributesにアクセスして、ビューに送信する前にローカライズすることはできますか?このようなもの:

Public Void OnActionExecuted(ActionExecutedContext: filterContext) {
  foreach (DisplayNameAttribute attr in filterContext...) {
    attr.TheValue = AppMessages.GetLocazation(attr.TheValue);
  }
}

私が見逃しているのは、属性にアクセスする方法です。これは可能ですか?

PS:私たちは仕事でvb.netを使用していて、それが私の脳に浸透しています。ですから、私のC#が少しずれている場合は、お詫び申し上げます。

4

2 に答える 2

1

実行時に属性値を変更しないでください。 最良の場合、これは何もしません(属性インスタンスのコピーを操作するため)。最悪の場合、これはコードの競合状態につながります。属性インスタンスは常に不変として扱います。

[DisplayName]をローカライズする必要がある場合は、それをサブクラス化し、仮想DisplayNameプロパティをオーバーライドします。これを行う方法の例については、DisplayNameAttributeのローカリゼーションを参照してください。

于 2010-05-28T18:13:04.637 に答える
0

はい、アクセスできます。

于 2010-05-28T13:05:36.683 に答える