[英]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.