簡體   English   中英

MVC 在 model 字段上禁用客戶端驗證

[英]MVC disabling client side validation on a model field

我有一個 model 用於創建/編輯項目,這些項目可以屬於一個類別。

類別呈現為下拉列表,因此用戶可以選擇類別,或通過文本框填寫新類別。

我遇到的問題是下拉菜單似乎想強制用戶從下拉菜單中選擇 select 一個值。 該字段的預期用途是可選的。

以下是相關的 model 屬性:

[Display(Name = "Category")]
public int CategoryId { get; set; }
public System.Web.Mvc.SelectList Categories { get; set; }

在我看來:

<div class="form-group">
    @Html.LabelFor(m => m.CategoryId, new { @class = "control-label" })
    @Html.DropDownList("CategoryId", Model.Categories, "Select a category", new { @class = "form-control" })
</div>
<input type="submit" value="Create" class="btn btn-primary" title="Create new item" />

以及我如何在 controller 中設置屬性:

// categories is a List of POCO class with CategoryId and CategoryName fields.
Categories = new SelectList(categories, "CategoryId", "CategoryName")

當我瀏覽到該頁面並單擊“創建”時,將關注類別下拉列表,這意味着 JS 認為它丟失了,但沒有顯示錯誤消息,因為我沒有設置 ValidationMessageFor() 幫助器。

的渲染類是

form-control input-validation-error

那么如何使這個字段成為可選的呢?

編輯:在 select 上渲染后的 data-* 屬性是

data-val-number="The field Category must be a number." data-val-required="The Category field is required."

您必須將CategoryId設為可為空:

[Display(Name = "Category")]
public int? CategoryId { get; set; }
public System.Web.Mvc.SelectList Categories { get; set; }

這樣,您可以將類別設置為可選字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM