我想打一个文本框字段在Razor视图必需的。 我可以不使用验证属性[Required]
因为字段名是动态生成的。 我检查这个答案这台data-val-required
领域true
使用JavaScript。 是否有任何其他方式做到这一点,因为我不会被知道运行项目前场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>
}
使用@required = true
内部HTML属性,而不是data_val_required = "true"
@Html.TextBoxFor(x => x.Controls[i].Value, new { id = obj.VitalName, @required = true })
如果字段中的部分类生成的,你可以实现一个哥们类的领域中的元数据,如下所示: 链接 。 如果由ORM(实体框架例如)所产生的代码所生成的类应该是局部的。 所以,你需要做的是以下几点:
- 创建一个类来保存元数据,给它一个合适的名字。
- 创建部分类(usethe同一命名空间生成的类),并与MetadataType属性装饰。 该属性需要一个类型,这是您刚才创建的类。
属性添加到元数据类。 他们必须完全匹配在生成的类属性,但你没有复制的所有属性,只是你需要的人。 所以,如果你只想做一个属性“姓”要求,只需添加
[必填]公共字符串姓氏{获得;设置; }
你的课
只是对于那些谁正在努力实现它通过@ Html.EditorFor,现在看来,这是不可能通过一些htmlAttributes,不要误以为“additionalViewData”与“htmlAttributes”就像我现在做了2小时:@