との真の私は私のMVCコントローラMVC ModelState.IsValid = nullに必要なプロパティ
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");
}
}
このモデル
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"
};
}
を持っている私が送っ:{ RD: "Whatever" }
そしてModelState.IsValid=true
をデバッグインチWebApiコントローラにも同様のコードがあり、期待通りに動作します(modelstate.valid=false
)
MVCがそうしている理由はありますか?または私のコードに何が間違っていますか?
。 – Nkosi
'ModelState.IsValid'は、' ModelState'にモデルエラーが追加されたかどうかを示します。この場合は、ModelStateにエラーがないため、真です。あなたはあなたに '{RD:"何でも}}を送ったと言った。デフォルトのモデルのバインダーは送信されたデータを見て、目的のタイプとプロパティを一致させます。バインディングの観点から、バインダーが辞書を見たときに、入力データに必要なプロパティー「RD」が提供されたため、 '[Required]'検証が満たされました。 – Nkosi