[英]Disable Validation on a single (disabled) @Html.EditorFor
我已經讀到,給定的執行此操作的方法似乎是針對不同的操作/控制器使用不同的視圖模型(在我看來有點矯枉過正)。
我想
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", data_val = "false"} })
可能有效但不幸的是沒有。
有人有什么想法嗎?
您可以使用.ignore來關閉對一個或多個元素的客戶端驗證。
這樣做的好處是它是通用的,只需添加使用過的忽略類即可應用於多個元素。
將此添加到您的 jquery 代碼中
$.validator.setDefaults({
ignore: ".ignore"
});
在您希望忽略/禁用客戶端驗證的每個元素上應用忽略類。
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control ignore", disabled = "disabled", data_val = "false"} })
當涉及到將元素聲明為禁用時,MVC 可能很有趣。 我改用 readonly 來解決這個問題。 只是將禁用更改為只讀,如下所示。
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control", readonly= "readonly", data_val = "false"} })
或者替代方法是使用輸入 html 元素
<input type="text" name="Ingredient.Name" id="Ingredient_Name" readonly="readonly" class="form-control, input-disabled" />
添加 CSS 類
.input-disabled /* CHANGE STYLING OF READONLY FIELDS */
{
background-color: #EEEEEE;
}
然后將您的課程添加到您的html
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control, input-disabled", readonly= "readonly", data_val = "false"} })
我創建了以下內容來向您展示jsfiddle
所有不顯眼的驗證(ASP.NET MVC 使用的那種)都基於查找和解析每個對象的data
屬性。 這些包含驗證引擎運行所需的所有信息,並且僅包含具有data-val="true"
的元素。
您傳遞的任何 HTML 屬性都將覆蓋任何默認屬性,因此最簡單的方法是強制data-val="false"
並且表單元素不會包含在驗證引擎中,其他任何相關標簽都不會解析。
下面是ASP .NET MVC 在每個字段級別禁用客戶端驗證的示例:
@Html.TextBoxFor(m => m.BatchId, new { data_val = "false" })
在呈現字段並重新啟用之前,您可以在 Razor 視圖中禁用客戶端驗證。 我相信你的問題已經在這里得到回答
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.