MVC3 Razor Partial View Render не включает атрибуты Validation

У меня есть прямая прямая форма, которая делает личные данные в качестве частичного представления в центре формы. Я не могу получить проверку на стороне клиента для работы над этой формой. Я начал преследовать HTML HENCED HTML и придумал ту же модель, отображаемое на стандартной форме и частичном представлении.

Я заметил, что входные элементы правильно заполнены на первом вызове, @ html.partial, следующее происходит только тогда, когда PartialView перезагружается через запрос AJAX.

Сначала заголовок моего частичного представления, это в пределах AJAX.Beginform на главной странице.

@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 );
}

Вот разметка бритвы от частичного вида:

@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>

вот отображаемое поле из частичного представления:

        <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>

здесь - это одно и то же поле модели, отображаемое в стандартном представлении:

        <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 на входном элементе.

Это правильно? Я не вижу, как валидация на стороне клиента может работать без этих атрибутов, либо я не упускаю что-то простое здесь?

11
задан Scott Norberg 20 September 2011 в 18:46
поделиться