Для полей в моем представлении ASP.NET MVC, которые были атрибутированы как обязательные, есть ли способ для платформы автоматически отображать какой-то индикатор того, что поле помечено как обязательное в метаданных?
Индикатор обязательного поля ASP.NET MVC
Ответы:
Должна быть возможность сделать это с помощью CSS, поскольку MVC3 добавляет эти настраиваемые атрибуты к элементу:
<input data-val="true" data-val-required="The Username field is required." id="Username" name="Username" type="text" value="" />
Вы можете отключить data-val-required в CSS следующим образом:
input[data-val-required] { background:red } или установить фоновое изображение звездочки и т. д.
Я сделал так, потому что мои обязательные поля должны быть динамическими (определены в файле конфигурации)
Добавьте в конце представления:
<script type="text/javascript">
$('input[type=text]').each(function () {
var req = $(this).attr('data-val-required');
if (undefined != req) {
var label = $('label[for="' + $(this).attr('id') + '"]');
var text = label.text();
if (text.length > 0) {
label.append('<span style="color:red"> *</span>');
}
}
});
</script>
Я изменил ответ Ренато Сайто, чтобы включить больше типов полей (все типы ввода и списки выбора) и использовать пространство имен jQuery вместо общего $. Вот моя ревизия:
<script type="text/javascript">
// add indicator to required fields
jQuery('input,select').each(function () {
var req = jQuery(this).attr('data-val-required');
if (undefined != req) {
var label = jQuery('label[for="' + jQuery(this).attr('id') + '"]');
var text = label.text();
if (text.length > 0) {
label.append('<span style="color:red"> *</span>');
}
}
});
</script>
Вот тот, который будет прикреплять красную звездочку к правой стороне чего-либо с атрибутом «data-val-required».
<script type="text/javascript">
$('[data-val-required]').after('<span style="color:red; font-size: 20px; vertical-align: middle;"> *</span>');
</script>
Добавления атрибута html недостаточно. Это вызовет только ошибку проверки javascript. Если вы хотите указать, что поле является обязательным, вы, вероятно, захотите добавить к нему звездочку. Вы можете сделать это с помощью метода расширения HtmlHelper. Вы можете найти подробное объяснение здесь
Указание обязательного поля в приложении MVC
Сделана небольшая доработка с моей стороны. На самом деле у меня были первичные ключи (столбцы идентификаторов в БД). Это я не хотел подчеркивать. Поэтому я использовал приведенный ниже фрагмент кода, чтобы выбрать только поля input[type=text]
, которые имеют обязательный атрибут в аннотации.
$("[data-val-required]").not(":hidden").not(":radio").not(":checkbox").after('<span style="color:red;max-width:10px;min-height:30px;">*</span>');