System.Web.Mvc ViewModels的最佳实践是什么

时间:2012-11-21 21:59:21

标签: c# asp.net asp.net-mvc-3 refactoring

我正在开发一个中等规模的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");
        }
    }
}

2 个答案:

答案 0 :(得分:3)

我认为将视图模型放在单独的项目中没有任何好处。视图模型必须与您的视图紧密耦合,因此您所做的只是增加复杂性而没有明显的好处。

对于将控制器放在单独项目中的人们,我感到同样如此。我真的没有看到好处。它没有任何结构或设计上的好处,只会使事情变得更复杂。

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

答案 1 :(得分:2)

视图模型与您的视图紧密相关。这是他们的目的。所以,是的,他们应该完全了解System.Web.Mvc。你把它们放在一个单独的类库中 - 很好,但是虽然这可能没有必要,但如果你决定采用这种方式,这个库应该知道像SelectListItemMultiSelectList这样的类,......所以继续并添加参考。不要重构您的视图模型 - 它们应该与这些类一起使用。

您应该注意的是不要将域模型与ASP.NET MVC结合使用。