更改模型MVC上的属性类型

时间:2014-10-29 15:33:07

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

我需要在表单上显示一组问题,可能有一个问题或许多问题,问题的答案可能是不同的类型(例如,年龄,姓名,出生日期等)

到目前为止,我设法提出的是一个视图模型:

public class QuestionViewModel
{
   public List<QuestionType> Questions { get; set; }
}

它显示类型QuestionType的列表:

public class QuestionType
{
    public int QuestionID { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
}

我需要知道的是,是否可以在属性上指定允许我更改类型的内容?我觉得这是不可能的,所以如果失败了,是否有任何关于我如何处理这个问题的建议,尽可能保持与MVC一致?

我想这样做的原因是它连接到默认的MVC框架验证并将其验证为正确的类型,作为写一个例子&#34; Hello&#34;进入一个要求&#34;年龄&#34;。

的问题

如果我不能将类型信息存储在模型中,我有一个解决方法的想法:

public class QuestionType
{
    public int QuestionID { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
    public string TypeInfo { get; set; }
}

并使用存储在那里的信息来编写自定义验证逻辑。

1 个答案:

答案 0 :(得分:2)

将您的答案属性更改为对象:

public class QuestionType
{
    public int QuestionID { get; set; }
    public string Question { get; set; }
    public object Answer { get; set; }
}

使用对象:

public void HandleAnswer(QuestionType qt)
{
    if (qt.Answer is Boolean)
    {
        //do boolean stuff
    }
    else if (qt.Answer is String)
    {
        //do string stuff
    }
    else if (qt.Answer is Int32)
    {
        //do int stuff
    }

    //do unknown object stuff

}