我在cshtml文件中有一个dropdownlistfor:

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)

在我的viewModel中,我的属性没有要求的任何注释:
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属性来装饰它:
[Required]
public long? KategoriaWlasnaId { get; set; }

关于asp.net-mvc-3 - 未将mvc dropdownlistfor标记为必需,但仍必需,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7309577/

10-12 06:31