我已经读到了这样做的方法似乎是对不同的动作/控制器有不同的视图模型(这有点过分杀戮)。
我想
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control", disabled = "disabled", data_val = "false"} })
可能有效,但遗憾的是没有。
有没有人有任何想法?
答案 0 :(得分:2)
在将元素声明为禁用时,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"} })
我创建了以下内容,向您展示{{3}}
答案 1 :(得分:1)
您可以使用.ignore来启用一个或多个元素的客户端验证。
关于这个的好处是它是通用的,只需添加使用的忽略类就可以应用于多个元素。
在你的jquery代码
中添加它$.validator.setDefaults({
ignore: ".ignore"
});
对要忽略的每个元素应用ignore类/禁用客户端验证。
@Html.EditorFor(model => model.Ingredient.Name, new { htmlAttributes = new { @class = "form-control ignore", disabled = "disabled", data_val = "false"} })
答案 2 :(得分:1)
所有不显眼的验证(ASP.NET MVC使用的类型)都取决于在每个对象上查找和解析data
属性。这些信息包含验证引擎需要运行的所有信息,并且仅包含data-val="true"
的元素。
您传递的任何HTML属性都将覆盖任何默认属性,因此最简单的方法是强制data-val="false"
并且表单元素不会包含在验证引擎中,并且其他任何依赖标记都不会被解析。
以下是ASP .NET MVC Disable Client Side Validation at Per-Field Level的示例:
@Html.TextBoxFor(m => m.BatchId, new { data_val = "false" })
答案 3 :(得分:0)
您可以在渲染字段并重新启用之前在Razor视图中禁用客户端验证。我相信您的问题已经得到解答here