我需要在表单上显示一组问题,可能有一个问题或许多问题,问题的答案可能是不同的类型(例如,年龄,姓名,出生日期等)
到目前为止,我设法提出的是一个视图模型:
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; }
}
并使用存储在那里的信息来编写自定义验证逻辑。
答案 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
}