저는 ASP.Net MVC 3을 시작하려고하는데이 시점에서 혼란 스럽습니다.ASP.Net MVC 3 ModelState.IsValid
일부 예에서는 컨트롤러에 입력이 포함 된 동작이 실행될 때 ModelState.IsValid가 true인지 확인하기위한 검사가 수행됩니다. 일부 예제에서는이 검사가 수행되지 않았 음을 보여줍니다. 이 수표는 언제 작성해야합니까? 입력이 조치 메소드에 제공 될 때마다 사용해야합니까?
저는 ASP.Net MVC 3을 시작하려고하는데이 시점에서 혼란 스럽습니다.ASP.Net MVC 3 ModelState.IsValid
일부 예에서는 컨트롤러에 입력이 포함 된 동작이 실행될 때 ModelState.IsValid가 true인지 확인하기위한 검사가 수행됩니다. 일부 예제에서는이 검사가 수행되지 않았 음을 보여줍니다. 이 수표는 언제 작성해야합니까? 입력이 조치 메소드에 제공 될 때마다 사용해야합니까?
입력 방식이 동작 방식에 제공 될 때마다 사용해야합니까?
정확하게 작업 인수로 제공된 뷰 모델을 사용하고 있으며이 뷰 모델과 관련된 일부 유효성 검사 (예 : 데이터 주석)가 있습니다. 여기에 일반적인 패턴입니다 : 다음
public class MyViewModel
{
[Required]
public string Name { get; set; }
}
과 :
[HttpPost]
public ActionResult Foo(MyViewModel model)
{
if (!ModelState.IsValid)
{
// the model is not valid => we redisplay the view and show the
// corresponding error messages so that the user can fix them:
return View(model);
}
// At this stage we know that the model passed validation
// => we may process it and redirect
// TODO: map the view model back to a domain model and pass this domain model
// to the service layer for processing
return RedirectToAction("Success");
}
예. 주로 [HttpPost]
속성으로 태그가 지정된 작업에 사용됩니다.
imho 뷰 모델은 항상 유효성을 검사해야하며 따라서 항상 일종의 유효성 검사 (일반적으로 DataAnnotation 특성)가 있어야합니다. 당신이 MVC에서 오류 처리에 관심이 있다면
public class MyViewModel
{
[Required] // <-- this attribute is used by ModelState.IsValid
public string UserName{get;set;}
}
, 나는 며칠 전에 blogged about it을했습니다.
미안하지만, '[필수]'속성이'ModelState.IsValid'에 의해 사용된다고 말하는 것은 정확하지 않습니다. 뷰 모델에 요청 값을 바인딩 할 때 오류 메시지를 ModelState에 삽입하는 기본 모델 바인더에서 사용됩니다. –
알아요,하지만 imho는 기본 유효성 확인 작업을 원하는 새 사용자와 관련이 없습니다. – jgauffin
IMHO 우리는 새로운 사용자라도 가능한 한 정확하게해야합니다. 예를 들어 대답에이 주석을 삽입하는 방식으로 ASP.NET MVC의 내부 작업에 익숙하지 않은 사람들은 분명히 사실이 아닌 유효성 검사를 트리거하는 것이 ModelState.IsValid' 호출이라고 생각할 수 있습니다. 예를 들어 나는 ModelState.IsValid가 항상 true를 반환하는 이유를 묻는 사람들을 보았습니다. 그 이유는 액션이 어떤 뷰 모델을 인수로 사용하지 않았기 때문입니다. 따라서 기본 모델 바인더가 잠재적 오류 메시지를 모델 상태에 추가하지 못했기 때문입니다. –