我正在开发一个中等规模的MVC项目。
视图模型已全部从Web程序集中拉出到单独的库中。其中一个数据结构由列表框表示,并具有MultiSelectList属性。
外部VM项目当前没有对System.Web.Mvc程序集的引用。
我应该添加引用吗?
我应该重构代码以不引用MultiSelectList类吗?如果是这种情况,RawOptionValues属性转换为MultiSelectList?
public class SelectListPrompt{
public IDictionary<string, string> RawOptionValues { get; set; }
public MultiSelectList OptionValues
{
get
{
return new MultiSelectList(RawOptionValues.ToList(), "Key", "Value");
}
}
}
答案 0 :(得分:3)
我认为将视图模型放在单独的项目中没有任何好处。视图模型必须与您的视图紧密耦合,因此您所做的只是增加复杂性而没有明显的好处。
对于将控制器放在单独项目中的人们,我感到同样如此。我真的没有看到好处。它没有任何结构或设计上的好处,只会使事情变得更复杂。
当然,例外是便携式区域,但是您将所有内容放在单独的项目中,而不仅仅是视图或控制器。
答案 1 :(得分:2)
视图模型与您的视图紧密相关。这是他们的目的。所以,是的,他们应该完全了解System.Web.Mvc
。你把它们放在一个单独的类库中 - 很好,但是虽然这可能没有必要,但如果你决定采用这种方式,这个库应该知道像SelectListItem
,MultiSelectList
这样的类,......所以继续并添加参考。不要重构您的视图模型 - 它们应该与这些类一起使用。
您应该注意的是不要将域模型与ASP.NET MVC结合使用。