У меня есть эта модель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 это делает? или что не так с моим кодом?
Во время отладки, какое значение хранится в 'modelVM.RD' если поставить точку останова на если заявление. – Nkosi
'ModelState.IsValid' сообщает вам, были ли какие-либо ошибки модели добавлены в' ModelState'. В этом случае это верно, потому что в ModelState нет ошибок. Вы сказали, что отправили '{RD:« Что бы ни было »}'. связующее устройство по умолчанию будет смотреть на отправленные данные и сопоставлять свойства с предполагаемым типом. С точки зрения привязки проверка '[Обязательная]' была выполнена, потому что когда связующее просматривало словарь, в входящие данные было предоставлено требуемое свойство «RD». – Nkosi