개인 데이터를 부분보기로 양식 중앙에 렌더링하는 간단한 형식이 있습니다. 이 양식에서 클라이언트 쪽 유효성 검사를 수행 할 수 없습니다. 나는 generate HTML을 쫓아 가기 시작했고 표준 양식과 부분보기에서 렌더링 된 동일한 모델 필드를 사용했다.MVC3 면도기 부분 뷰 렌더링에 데이터 유효성 검사 속성이 포함되어 있지 않습니다.
@html.partial 첫 번째 호출에서 입력 요소가 올바르게 채워 졌음을 발견했습니다. 다음은 ajax 요청을 통해 partialview가 다시로드 될 때만 발생합니다.
먼저 내 부분보기의 머리글, 기본 페이지의 Ajax.BeginForm 내에 있습니다. 여기
<td>
<div class="editor-field">
<input id="Player_Person_Addresses_0__PostalCode" maxlength="10" name="Player.Person.Addresses[0].PostalCode" style="width:80px;" type="text" value="" />
</div>
</td>
가 렌더링 동일 모델 필드이다
여기
@Html.ValidationMessageFor(model=>Model.Player.Person.Addresses[0].PostalCode)
<table>
<tr>
<td style="width:200px;">City*</td>
<td>State</td>
<td>Zip/Postal Code</td>
</tr>
<tr>
<td>@Html.TextBoxFor(p=>Model.Player.Person.Addresses[0].CityName, new { style="width:200px;", maxlength=50 })</td>
<td>
@Html.DropDownListFor(p=> Model.Player.Person.Addresses[0].StateCode
, MPAUtils.GetStateList(Model.Player.Person.Addresses[0].StateCode))</td>
<td>
<div class="editor-field">
@Html.TextBoxFor(p=>Model.Player.Person.Addresses[0].PostalCode, new { style="width:80px;", maxlength=10 })
</div>
</td>
</tr>
</table>
상기 부분 뷰에서 렌더링 필드 : 여기
@model MvcMPAPool.ViewModels.EventRegistration
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".phoneMask").mask("(999) 999-9999");
});
</script>
@{
var nPhn = 0;
var dTotal = 0.0D;
var ajaxOpts = new AjaxOptions{ HttpMethod="Post", UpdateTargetId="idRegistrationSummary", OnSuccess="PostOnSuccess" };
Html.EnableClientValidation(true);
Html.EnableUnobtrusiveJavaScript(true);
}
는 부분 뷰로부터 면도기 태그 인 표준보기 :
<div class="editor-field">
<input data-val="true" data-val-length="The field Postal/Zip Code must be a string with a maximum length of 10." data-val-length-max="10" data-val-required="Postal or Zip code must be provided!" id="Person_Addresses_0__PostalCode" maxlength="10" name="Person.Addresses[0].PostalCode" title="Postal/Zip Code is required" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Person.Addresses[0].PostalCode" data-valmsg-replace="true"></span>
</div>
부분 뷰 렌더링에 입력 요소에 data-val-xxx 속성이 없음을 유의하십시오.
이 정보가 맞습니까? 클라이언트 측 유효성 검사가 이러한 특성없이 어떻게 작동 할 수 있는지 보지 않습니까?
참조 ['@using (Html.BeginSubForm())'대답 (http://stackoverflow.com/a/8750181)에 [ASP.NET MVC 3 : 눈에 거슬리지 검증을 생성 BeginForm 레이아웃에있다] (http://stackoverflow.com/questions/4997269/asp-net-mvc-3-generate-unobtrusive-validation-when-beginform-is-on-the-layout). –