2012-11-21 235 views
1

我正在一个中型MVC项目。什么是最佳实践System.Web.Mvc ViewModels

视图模型已被全部拉出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"); 
     } 
    } 
} 

回答

2

查看模型与您的意见紧密结合。这是他们的目的。所以,是的,他们应该绝对知道System.Web.Mvc。你已经把它们放在一个单独的类库中 - 很好,但虽然这可能不是必需的,但如果你决定这样做,这个库应该知道关于类如​​SelectListItem,MultiSelectList,...所以继续并添加引用。不要重构你的视图模型 - 他们应该使用这些类。

您应该注意的不是将您的域模型与ASP.NET MVC耦合。

+0

我正在这样倾斜。我正在从不同的团队成员那里获得这个项目,并且对“设计”决定感到疑惑。 – THBBFT

3

我看不出任何将您的视图模型放入单独项目中的好处。视图模型必须与您的观点紧密结合,因此您所做的只是增加复杂性而没有可观的收益。

对于那些把他们的控制器放在一个单独的项目中的人来说,我感觉一样。我真的没有看到好处。它没有任何结构或设计优势,只是使事情更加复杂。

当然,例外是便携式领域,但是您将所有内容都放在单独的项目中,而不仅仅是视图或控制器。

+0

我完全同意,它确实混淆了代码。后来我会问一个关于这个库的问题,除了字符串常量之外......只是在开玩笑......关于问,我知道该用什么代码。 – THBBFT

相关问题