1
MVC3을 사용할 때 오류가 발생합니다. 중첩 된 속성과 속성을 비교합니다.Asp.net MVC3 속성 비교 : 중첩 된 속성과 비교할 때 오류가 발생했습니다.
모델과 뷰 모델 :
public class Data
{
public string Input { get; set; }
}
public class DataVM
{
public Data Data { get; set; }
[Compare("Data.Input")]
public string ConfirmInput { get; set; }
}
컨트롤러 :
public ActionResult Data() {
return View(new DataVM());
}
[HttpPost]
public ActionResult Data(FormCollection fc) {
DataVM vm = new DataVM();
TryUpdateModel(vm, fc);
if (ModelState.IsValid){
return Content("Success!!!");
}
return View(vm);
}
보기 :
@model myth.Models.ViewModels.DataVM
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.EditorFor(m => m.Data.Input)
@Html.ValidationMessageFor(m => m.Data.Input)
<br />
@Html.EditorFor(m => m.ConfirmInput)
@Html.ValidationMessageFor(m => m.ConfirmInput)
<br />
<input type="submit" value="Save" />
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
내가 사용하는 경우 [비교 (이하
샘플 코드는 "Input")], 클라이언트 측 유효성 검사가 실패합니다. [Compare ("Data.Input")]을 사용하면 클라이언트 측 유효성 검사는 작동하지만 서버 측은 실패합니다.
protected override ValidationResult IsValid(...) { .. },
클래스 CompareAttribute.cs에서 , 방법은 Data.Input 재산권을 찾기 위해 실패합니다.
중첩 된 속성 비교를 위해 비교를 사용하는 올바른 방법은 무엇입니까?
감사합니다. 프로덕션에서 제안한 내용을 수행하고 있지만 중첩 된 특성과 비교하는 방법을 알고 싶습니다. 그 이유는 여러 뷰 모델에서 동일한 데이터 모델을 사용하고 데이터 모델에서 사용되는 유효성 검사 규칙을 모든 뷰 모델에 복사해야한다는 것입니다. 현재 mvc 릴리스에서 실행 가능하지 않은 경우 중첩 된 속성 유효성 검사를 수용하기 위해 향후 릴리스에서 compare 특성의 코드를 업데이트해야합니다. –