我需要在表單上顯示一組問題,可能有一個問題或多個問題,並且問題的答案可能是不同類型的(例如,年齡,姓名,出生日期等)。更改模型上的屬性類型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框架驗證中,並將其驗證爲正確的類型,例如在詢問「年齡」的問題中寫入「Hello」。
我有一種解決方法的想法,如果其中I存儲在模型中的類型信息因此它是不可能的:
public class QuestionType
{
public int QuestionID { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
public string TypeInfo { get; set; }
}
,並使用存儲在那裏編寫自定義驗證邏輯的信息。
當你說變型你的意思是一個字符串爲int或類似的類別開關在這種情況下,你可以看''Enums''。 – 2014-10-29 15:38:18
我的意思是說,例如問題出現了,它是「你叫什麼名字?」我想我的Answer屬性的類型是一個字符串。如果問題出現了,那麼「你的年齡是多少?」我希望我的Answer屬性是一個整數。我基本上希望mvc有辦法做到這一點,而不必做一個解決方法,如果需要,我已經做好了充分的準備。 – Enbern 2014-10-29 15:39:47
您是否嘗試過使用DataAnnotation正則表達式?這不會改變每種說法的類型,但它可以讓您驗證輸入,而無需直接更改模型。 IE瀏覽器的年齡,你設置RegEx查找唯一的數字,其他任何事情都會引發錯誤 – 2014-10-29 15:41:15