Asp.net-Mvc-3

mvc dropdownlistfor 未標記為必需但仍是必需的

  • September 5, 2011

我在 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)

在我的 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; }

引用自:https://stackoverflow.com/questions/7309577