如何在同一个视图中为基本ViewModel和派生的ViewModel使用两个不同的EditorTemplates?

时间:2011-10-10 22:02:53

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我有很多ViewModel派生自ViewModel。

是否可以在基础ViewModel中显示派生的ViewModel部分的EditorTemplate,以及在同一View中显示派生部分的不同模板?如果是的话,它是如何完成的?

Base ViewModel:

public class ShowQuestionViewModel
    {
        public int Question_ID { get; set; }
        public String Question_Wording { get; set; }
        public String Question_Type { get; set; }
        public String Question_Number { get; set; }
        public Boolean Visible { get; set; }
        public Boolean IsAnswered { get; set; }

    }

派生的ViewModel:

public class ShowMatrixQuestionViewModel : ShowQuestionViewModel
    {
        public Dictionary<MatrixRows, List<MatrixColumns>> columnrow;
        public List<MatrixColumns> columns;
        public List<MatrixRows> rows;

        public ShowMatrixQuestionViewModel()
        {
            columns = new List<MatrixColumns>();
            rows = new List<MatrixRows>();
            columnrow = new Dictionary<MatrixRows, List<MatrixColumns>>();
        }
    }

    public class MatrixColumns
    {
        public int Column_ID { get; set; }
        public int Column_Number { get; set; }
        public String Column_Description { get; set; }
        public Boolean IsAnswer { get; set; }
    }

    public class MatrixRows
    {
        public int Row_Id { get; set; }
        public String Row_Number { get; set; }
        public String Row_Description { get; set; }
    }

因此,当我使用EditorFor(x =&gt; ShowMatrixQuestionViewModel)时,我想对来自ShowQuestionViewModel的属性使用特殊的编辑器。

1 个答案:

答案 0 :(得分:0)

您可以创建单独的编辑器模板:

@model ShowMatrixQuestionViewModel
@Html.EditorForModel()

然后定义自定义编辑器模板~/Views/Shared/EditorTemplates/ShowMatrixQuestionViewModel.cshtml,您可以在其中自定义所有属性,包括基本类型的属性。