カスタム プロパティを横幅の ViewDataDictionary に追加する最も実用的な方法は何ですか?
簡単なケースを想定してみましょう:
public ActionResult Index()
{
// ViewData["Title"] = "Home";
ViewData.Title = "Home";
return View();
}
最初に頭に浮かぶのは、カスタム クラスとアプリケーション ベース コントローラーでの "new" の使用です。
public class CustomDataDictionary : ViewDataDictionary
{
public string Title { get; set; }
}
public class ApplicationController : Controller
{
public new CustomDataDictionary ViewData { get; set;}
}
ビューでもカスタム ビュー データ ディクショナリを使用するには、同じプロパティを持つ対応する CustomViewPage も作成する必要があると思います。
2 番目に思い浮かぶのは、ViewDataDictionaryExtensions クラスを作成することです。
第三に、「View Model」を使用します。View Models に関する私の欠点は、少なくとも前の 2 つのオプションと比較すると、常に 1 つを作成して View に渡すことです。
本当の目標は、各アプリケーションが、そのアプリケーションの目的に適した ViewData の主要なプロパティ セットを持つようにすることです。私はディクショナリ キーに頼るのをためらう傾向があります。他の開発者が実際のプロパティを使用して、設定するデータを知ることができると便利です。さらに、キーは簡単にスペルを間違えることがあります。
3 つの方法はすべて、仕事を成し遂げます。他の人は何をしましたか?