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

C# System.Web.Mvc ViewModels的最佳实践是什么,c#,asp.net,asp.net-mvc-3,refactoring,C#,Asp.net,Asp.net Mvc 3,Refactoring,我正在从事一个中型MVC项目 视图模型都已从web部件中拉出到单独的库中。其中一个数据结构由列表框表示,并具有MultiSelectList属性 外部VM项目当前没有对System.Web.Mvc程序集的引用 我应该添加引用吗 我是否应该重构代码,使其不引用MultiSelectList类?如果是这种情况,RawOptionValues属性在哪里转换为MultiSelectList public class SelectListPrompt{ public IDictionary<

我正在从事一个中型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");
        }
    }
}
public类SelectListPrompt{
公共IDictionary RawOptionValues{get;set;}
公共多选列表选项值
{
得到
{
返回新的多选列表(RawOptionValues.ToList(),“Key”,“Value”);
}
}
}

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


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

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


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

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

我对那些将控制器放在单独项目中的人也有同样的感觉。我真的看不出有什么好处。它没有任何结构或设计上的好处,只是让事情变得更复杂


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

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

我对那些将控制器放在单独项目中的人也有同样的感觉。我真的看不出有什么好处。它没有任何结构或设计上的好处,只是让事情变得更复杂


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

我正朝着这个方向倾斜。我是从另一个团队成员那里得到这个项目的,我想知道“设计”的决定。我就是这么想的。我从另一个团队成员那里得到了这个项目,我想知道“设计”的决定。我完全同意,它确实混淆了代码。稍后我会问一个关于库的问题,库中只有字符串常量。。。只是开玩笑。。。关于询问,我知道该如何处理该代码。我完全同意,它确实混淆了代码。稍后我会问一个关于库的问题,库中只有字符串常量。。。只是开玩笑。。。关于询问,我知道该如何使用该代码。