Html.ValidationMessageFor в частичном представлении (ASP.NET MVC3) - PullRequest
0 голосов
/ 18 февраля 2011

В настоящее время у меня есть частичное представление с текстовым полем и ValidationMessageFor.Это работает нормально, и сообщение отображается, как и ожидалось, когда ввод неверен.Я делаю небольшой рефакторинг HTML и хочу увеличить validationMessageFor до представления, которое в настоящее время содержит частичное представление.У меня почти все работает правильно, но есть пара загадок.

@Html.ValidationMessageFor(m => m.Mileage, string.Empty, new { id = "spanMileageError", @class = "mileageErrorSpanClass" }) 

Модель для этого вида является объектом транспортного средства.Модель для ParticalView - это немного другой объект

@Html.TextBoxFor(v => v.Vehicle.Mileage, new { placeHolder = mileagePlaceHolderText, id = Model.TextBoxId, maxlength = "7", @class="mileageTextBoxClass" })       

. Эта конфигурация дает имя текстовому полю ("Vehicle.M Пробег"), но атрибут Validation ("data-valmsg-for") равен«Пробег», а не «Автомобиль. Пробег».

Как я могу исправить помощник ValidationMessageFor, чтобы он выдал правильный HTML, чтобы эта проверка работала?

Вот HTML-код текущего представления до рефакторинга HTML

<input type="text" value="" placeholder="Enter Mileage" name="Vehicle.Mileage"     maxlength="7" id="textBoxMileage" data-val-range-min="1" data-val-range-max="999999" data-    val-range="Mileage must be a valid number between 1 and 999,999." data-val-number="The     field Mileage must be a number." data-val="true" class="mileageTextBoxClass input-    validation-error" autocomplete="off">

<span id="spanMileageError" data-valmsg-replace="true" data-valmsg-for="Vehicle.Mileage" class="mileageErrorSpanClass field-validation-error"><span htmlfor="textBoxMileage" generated="true" class="">Mileage must be a valid number between 1 and 999,999.</span></span>

А вот HTML-код после рефакторинга

<input type="text" value="" placeholder="Enter Mileage" name="Vehicle.Mileage" maxlength="7" id="textBoxMileage" data-val-range-min="1" data-val-range-max="999999" data-val-range="Mileage must be a valid number between 1 and 999,999." data-val-number="The field Mileage must be a number." data-val="true" class="mileageTextBoxClass placeholder" autocomplete="off">
<span id="spanMileageError" data-valmsg-replace="true" data-valmsg-for="Mileage" class="field-validation-valid mileageErrorSpanClass"></span>

Обратите внимание на диапазонотсутствует внутренний элемент span, который раньше присутствовал.Может кто-нибудь помочь мне исправить проблему здесь?

Спасибо за любые советы и рекомендации или возможные решения.Приветствия,
~ СК в Сан-Диего

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Вы можете просто использовать Html.TextBox () вместо

@Html.TextBox("Mileage", Model.Vehicle.Mileage, new { placeHolder = mileagePlaceHolderText, id = Model.TextBoxId, maxlength = "7", @class="mileageTextBoxClass" })
0 голосов
/ 18 февраля 2011

Я немного новичок в MVC, но почему бы не использовать ту же модель? Как это:

@model ProjectNamespace.Models.Vehicle

или как это:

@using ProjectNamespace.Models.Vehicle

Полагаю, вы могли бы достичь желаемых результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...