내 모델 분야 :은 빈 문자열 필드에 잘못된 ModelState.IsValid 번호와 빈 문자열을 받아
[DisplayName("Height")]
[RegularExpression (@"^\d*$", ErrorMessage="Height must be a number or left out blank")]
public string Height { get; set; }
[DisplayName("Width")]
[RegularExpression(@"^\d*$", ErrorMessage = "Height must be a number or left out blank")]
public string Width { get; set; }
내보기 :
[HttpPost]
public ActionResult Edit(MyModeltype model)
{
model.Width = String.IsNullOrEmpty(model.Width) ? "" : model.Width; //NEEDED?
model.Height = String.IsNullOrEmpty(model.Height) ? "" : model.Height; //NEEDED?
if (ModelState.IsValid)
SaveSettings(model);
return View("SomeView");
}
I을 : 컨트롤러 액션에서
<%= Html.LabelFor(x => x.Width) %>:
<%= Html.TextBoxFor(x => x.Width) %>
<%= Html.LabelFor(x => x.Height) %>:
<%= Html.TextBoxFor(x => x.Height) %>
빈 텍스트 상자를 제공하면 Model.Width 및 .Height는 null로 전달되고 ModelState.IsValid는 false입니다. 빈 문자열을 전달할 수 있어야합니다. regex 속성을 생략하면 같은 문제가 발생하므로 정규식이 아닙니다. 고맙습니다!
. 디버깅 목적 이었습니까? – mishap
아니요 모델 속성의 정규식이 실패 할 경우 프레임 워크가 오류 메시지를 표시하도록 기본 제공됩니다. 클라이언트 측 유효성 검사가 제대로 작동하도록하려면 포함시켜야합니다. 또한 필수로 표시되지 않은 필드에 빈 문자열을 사용하면 효과가 있습니다. 모델에서보기로 올바르게 설정되지 않은 다른 속성이 있습니까? 그러면 모델 상태가 유효하지 않게됩니다. –