我想在剃刀视图中根据需要创建一个文本框字段。我无法使用验证属性[Required]
,因为字段名称是动态生成的。我检查了this answer,它使用javascript将data-val-required
字段设置为true
。有没有其他方法可以做到这一点,因为我在运行项目之前不知道字段ID?
修改
我尝试了下面的代码并且现在可以使用了,除了表单提交中没有显示验证消息。
@for (int i = 0; i < Model.Controls.Length; i++)
{
@Html.TextBoxFor(x => x.Controls[i].Value, new { id = obj.VitalName, data_val_required = "true" })
@Html.ValidationMessageFor(x => x.Controls[i].Value, "Please fill in the details.")
</td>
</tr>
}
答案 0 :(得分:4)
在html属性中使用@required = true
而不是data_val_required = "true"
@Html.TextBoxFor(x => x.Controls[i].Value, new { id = obj.VitalName, @required = true })
答案 1 :(得分:1)
如果字段是在分部类中生成的,则可以使用字段的元数据实现伙伴类,如下所示:link。 如果您的代码是由ORM(例如实体框架)生成的,则生成的类应该是部分的。 所以你需要做的是:
向元数据类添加属性。它们必须完全匹配生成的类中的属性,但您不必复制所有属性,只复制您需要的属性。因此,如果您只想制作一个属性&#39;姓氏&#39;必填,只需添加
[必需] public string Lastname {get; set; }
到你的班级
答案 2 :(得分:0)
对于那些试图通过@Html.EditorFor实现它的人来说,似乎不可能传递一些htmlAttributes,不要误认为&#39; additionalViewData&#39;与&#39; htmlAttributes&#39;正如我现在做了2个小时:@