В настоящее время у меня есть частичное представление с текстовым полем и ValidationMessageFor. Это работает нормально, и сообщение отображается, как и ожидалось, когда ввод недействителен. Я делаю небольшой рефакторинг HTML и хочу поднять validationMessageFor до представления, которое в настоящее время содержит частичное представление. У меня почти все работает правильно, но есть пара загвоздок.
@Html.ValidationMessageFor(m => m.Mileage, string.Empty, new { id = "spanMileageError", @class = "mileageErrorSpanClass" })
Моделью для этого вида является автомобильный объект. Модель для partialView — это немного другой объект.
@Html.TextBoxFor(v => v.Vehicle.Mileage, new { placeHolder = mileagePlaceHolderText, id = Model.TextBoxId, maxlength = "7", @class="mileageTextBoxClass" })
Эта конфигурация дает имя текстовому полю ("Vehicle.Mileage"), но атрибут проверки ("data-valmsg-for") равен "Mileage", а не "Vehicle.Mileage".
Как я могу исправить помощник 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 отсутствует внутренний элемент span, который раньше присутствовал. Может ли кто-нибудь помочь мне исправить проблему здесь?
Спасибо за любые советы и рекомендации или возможные решения. С уважением,
~ck в Сан-Диего