MVC DropdownListfor не помечен по мере необходимости, но все еще требуется

StackOverflow https://stackoverflow.com/questions/7309577

Вопрос

У меня есть DropdownListfor в файле CSHTML:

var kategorie_wlasna = new SelectList(
  (from z in Model.Kategoria
    where !formReadOnly || z.Id == Model.KategoriaWlasnaId 
      select z), 
  "Id", 
  "Nazwa");
...
@Html.DropDownListFor(
  model => model.KategoriaWlasnaId, 
  kategorie_wlasna,
  "----",
  htmlClassDropDownListDef)

В моем просмотре у меня есть собственность без каких -либо аннотаций по мере необходимости:

public long KategoriaWlasnaId { get; set; }

Но поле все еще требуется. В браузере я получаю:

<select class="input-validation-error form_object1" data-val="true" data-val-number="The field KategoriaWlasnaId must be a number." data-val-required="The KategoriaWlasnaId field is required." id="KategoriaWlasnaId" name="KategoriaWlasnaId">
  <option value="">-----</option>
  <option value="1227">Wykroczenie</option>
  <option value="1228">Przestępstwo</option>
</select>

Что мне не хватает?

Это было полезно?

Решение

Это нормально. Типы стоимости всегда требуются. Вы можете сделать свою собственность нулевой:

public long? KategoriaWlasnaId { get; set; }

Теперь это больше не потребуется, и если пользователь не выберет ни одного элемента в раскрывающемся спине, его значение будет null. Анкет И если вы хотите сделать это необходимым и персонализировать сообщение, вы можете украсить его с помощью необходимого атрибута:

[Required]
public long? KategoriaWlasnaId { get; set; }

Другие советы

Вы можете изменить по умолчанию DataAnnotationsModelValidatorProvider так что типы значений не потребуются путем добавления следующих строк в Global.asax.cs В методе Application_Start:

ModelValidatorProviders.Providers.Clear(); 
ModelValidatorProviders.Providers.Add(new DataAnnotationsModelMetadataValidatorProvider());
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

Если DataType (используйте Long) не обязательна, то это также будет работать, просто сменив длинное на строку

public long kategoriawlasnaid {get; установлен; }

public String kategoriawlasnaid {get; установлен; }

это также

общественность долго? Kategoriawlasnaid {get; установлен; }

Также, если вы используете аннотации данных, вы также можете использовать нулевой атрибут

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top