更改模型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; }
}
以及使用存储在那里的信息来编写自定义验证逻辑。
将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
}