将自定义属性添加到侧宽 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 才能在视图中使用自定义视图数据字典。
想到的第二件事是创建一个 ViewDataDictionaryExtensions 类。
第三,使用“视图模型”。我对 View Models 的不满是总是创建一个并将其传递给 View 似乎在控制器代码中一遍又一遍地重复自己,至少与前两个选项相比。
真正的目标是每个应用程序可能在 ViewData 中有一组核心属性,这些属性对于该应用程序的目的是有意义的。我倾向于回避依赖字典键,如果有真正的属性让其他开发人员依赖一个来知道要设置什么数据,那就太好了。此外,键很容易拼写错误。
这三种方法都能完成工作。别人做了什么?