보기에서 모델을 수신 중입니다.
값의 일부가 자동으로 입력된다MVC ModelState가 오류를 잘못보고 함
을하지만, 필요한 값의 일부는과 같이, 수동으로 추가해야합니다.
ModelState.IsValid
은 다음과 같습니다
[HttpPost]
public ActionResult Foobar(FooModel model, FormCollection collection)
{
// "timePicker" is a dropdown list containing different times
var time = collection["timePicker"].Split(':');
model.Hours = int.Parse(time[0]);
model.Minutes = int.Parse(time[1]);
if (ModelState.IsValid)
{
... // Do stuff
}
}
을 그래서 여기가 문제 야 그릇된.
디버깅 한 결과 model.Minutes
및 model.Hours
이 할당되지 않았습니다.
... 이 (가) 값을 할당했기 때문에 사실이 아닙니다.
나는 ModelState.Clear()
을 사용하는 것으로 생각했지만, 나머지 정보가 모두 유효한지 수동으로 확인하고 싶지는 않습니다.
다른 방법으로 문제를 해결할 수 있습니까?
+1하지만 키가 없으면 예외가 throw되는지 여부를 기억할 수 없습니다. 아마도 :) – mattytommo
@mattytommo이 경우 키가 항상 존재해야합니다. 그런데이 메서드는 키를 제거 할 수 없으면 (읽기 전용 사전 또는 기존 키가 아닌) false를 반환하고 키가 제거 된 경우 true를 반환합니다. –
@JacobSpire 그런데,이 경우 ViewModel int를 사용할 수도 있습니다. 아마 더 좋을 것입니다 (또는 사용자 정의 ModelBinder). –