更改模型MVC上属性的类型

本文关键字:属性 类型 MVC 模型 | 更新日期: 2023-09-27 18:28:14

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

到目前为止,我已经设法想出了一个视图模型:

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框架验证中,并将其验证为正确的类型,例如,将"Hello"写进一个询问"Age"的问题中。

如果无法在模型中存储类型信息,我有一个解决方法:

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

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

更改模型MVC上属性的类型

将Answer属性更改为对象:

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
}