Asp.net mvc 3 我应该在哪里放置映射ViewModel的方法?

Asp.net mvc 3 我应该在哪里放置映射ViewModel的方法?,asp.net-mvc-3,Asp.net Mvc 3,我有以下ViewModel,它是继承它的其他ViewModel的基类 将映射viewmdoel的方法放置在viewmodel中是一个好主意吗 像这样: public class ShowQuestionViewModel { public ShowQuestionViewModel() { } public int Question_ID { get; set; } public Boolean Con

我有以下ViewModel,它是继承它的其他ViewModel的基类

将映射viewmdoel的方法放置在viewmodel中是一个好主意吗

像这样:

public class ShowQuestionViewModel
    {
        public ShowQuestionViewModel()
        {

        }

        public int Question_ID { get; set; }

        public Boolean Condition_Fullfilled;

        public String requiredmessage = "";

        [Required(ErrorMessage = "Dette felt er påkrævet")]
        public String Question_Wording { get; set; }

        public String Question_Type { get; set; }

        [Required(ErrorMessage = "Dette felt er påkrævet")]
        //[Digits(ErrorMessage = "Feltet må kun indeholde heltal")]
        public String Question_Number { get; set; }

        public String Left_scale { get; set; }
        public String Right_scale { get; set; }
        public int Scale_Length { get; set; }
        public String Left_Scale_HelpText { get; set; }
        public String Right_Scale_HelpText { get; set; }

        public Boolean Visible { get; set; }
        public Boolean IsAnswered { get; set; }
        public String Question_HelpText { get; set; }
        public String Question_HelpText_PDF { get; set; }
        public int Category_ID { get; set; }

        // Ting der er behov for til Views
        public SelectList Categories { get; set; }
        public SelectList Visibility { get; set; }
        public string RefUrl { get; set; }

        public void MapQuestionToViewModel(MvcApplication3.Models.Question question)
        {
            Question_ID = question.question_id;
            Category_ID = Convert.ToInt32(question.category_id);
            Question_Number = question.question_number.ToString();
            Question_Wording = question.question_wording;
            Visible = (bool)question.visible;

            String hlptxt = question.help_text;

            Question_HelpText = hlptxt;

            Question_HelpText_PDF = question.help_text_pdf ?? "";

            Left_scale = question.left_scale;
            Right_scale = question.right_scale;
            Scale_Length = question.scale_length ?? 0;

            Left_Scale_HelpText = question.left_scale_hlptxt;
            Right_Scale_HelpText = question.right_scale_hlptxt;

            Question_Type = question.Question_Type.type_description;

            Categories = GetQuestions.GetCategories(question);

            Visibility = GetQuestions.getVisibleSelectList();
       }
}
还是应该放在别的地方


欢迎链接到一些设计指南

我将使用第二个构造函数

public ShowQuestionViewModel(MvcApplication3.Models.Question dbmodel)
MVCAPApplication3.Models命名空间应包含视图模型,而不包含其他内容。我建议您将所有业务逻辑移到类库中


您也不必处理映射。您可以使用AutoMapper或ValueInjector之类的框架。

能否举例说明类库的含义,以及如何使用此类库映射ViewModel,以及上面的代码?visual studio中的一个类库项目。在解决方案资源管理器中右键单击解决方案文件,然后添加类库。它与映射无关,只与良好的解决方案/应用程序结构有关