真我有這個型號MVC ModelState.IsValid =用空所需的屬性
public class ModelVM
{
private string _rD;
[Required]
public string RD
{
get
{
return _rD;
}
set
{
_rD = RCodes.Contains(value)? value : null;
}
}
private static List<string> RCodes = new List<string>
{
"OK",
"OTHER",
"ANOTHER"
};
}
在我的MVC控制器
public class MyController : Controller
{
public ActionResult Index(ModelVM modelVM, FormCollection collection)
{
if (!ModelState.IsValid)
return Json(new
{
Result = "ERROR",
Message = "Missing fields."
});
return Json("OK");
}
}
我送:{ RD: "Whatever" }
而且在調試ModelState.IsValid=true
。我有一個WebApi控制器上的類似代碼,並按我的預期工作(modelstate.valid=false
)
你有一些想法,爲什麼MVC這樣做?或者我的代碼有什麼問題?
在調試過程中,如果你把一個斷點if語句什麼值存儲在'modelVM.RD'。 – Nkosi
'ModelState.IsValid'告訴您是否有任何模型錯誤已添加到'ModelState'。在這種情況下,這是事實,因爲ModelState中沒有錯誤。你說你發了'{RD:「無論」}「。默認模型聯編程序將查看發送的數據並將屬性與預期類型進行匹配。從綁定的角度來看,'[Required]'驗證被滿足,因爲當活頁夾查看字典時,在輸入數據中提供了所需的屬性「RD」。 – Nkosi