将自定义属性添加到侧面ViewDataDictionary的最实用方法是什么?CustomViewData的最佳途径?
让我们假设一个简单的例子:
public ActionResult Index()
{
// ViewData["Title"] = "Home";
ViewData.Title = "Home";
return View();
}
,想到的第一件事是在应用基础控制器的自定义类,并使用“新”:
public class CustomDataDictionary : ViewDataDictionary
{
public string Title { get; set; }
}
public class ApplicationController : Controller
{
public new CustomDataDictionary ViewData { get; set;}
}
我假设您还必须使用相同的属性创建相应的CustomViewPage以在视图中使用自定义视图数据字典。
想到的第二件事是创建一个ViewDataDictionaryExtensions类。
第三,使用“查看模型”。 View Model的牛肉总是创建一个,然后将它传递给View,好像在控制器代码中一遍又一遍地重复自己,至少与之前的两个选项相比。
真正的目标是每个应用程序可能有一组核心的ViewData的有意义的所有应用目的性的。我倾向于回避依赖字典密钥,并且最好让其他开发人员拥有真正的属性来依靠它来知道要设置的数据。另外,钥匙很容易被拼错。
以上三种方法都可以完成工作。别人做了什么?
”这就是常数。“ 听起来不错,直到你有大约50人。当你开始使用常量作为散列键名时,它会变得非常快。 扩展将是gret ...如果只有我们有扩展属性。获取/设置ala SmartBag不会告诉不熟悉的编码人员对解决问题的很多了解。 控制器方法可以,但你暗示他们是控制器的属性,这是不正确的。他们是action viewdata的属性。 – claco 2009-04-17 15:24:05