1

我正在从事一个中型 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");
        }
    }
}
4

2 回答 2

3

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

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

当然,可移植区域除外,但是您将所有内容都放在单独的项目中,而不仅仅是视图或控制器。

于 2012-11-21T22:13:54.713 回答
2

视图模型与您的视图紧密耦合。这是他们的目的。所以,是的,他们绝对应该知道System.Web.Mvc. 您已将它们放在一个单独的类库中 - 很好,但是虽然这可能不是必需的,但如果您决定这样做,这个库应该知道类,如SelectListItem, MultiSelectList, ... 所以继续添加参考。不要重构您的视图模型——它们应该与这些类一起使用。

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

于 2012-11-21T22:01:10.770 回答