3

我想在剃刀视图中根据需要制作一个文本框字段。我不能使用验证属性[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>
}
4

3 回答 3

4

@required = true在 html 属性中使用而不是data_val_required = "true"

@Html.TextBoxFor(x => x.Controls[i].Value, new { id = obj.VitalName,  @required = true })
于 2015-03-10T10:16:47.970 回答
1

如果字段是在部分类中生成的,您可以使用字段的元数据实现一个伙伴类,如下所示:link。如果您的代码是由 ORM(例如实体框架)生成的,则生成的类应该是部分的。所以你需要做的是以下几点:

  1. 创建一个类来保存元数据,给它一个适当的名称。
  2. 创建一个部分类(使用与生成的类相同的命名空间)并用 MetadataType 属性装饰它。该属性需要一个类型,即您刚刚创建的类。
  3. 将属性添加到元数据类。它们必须与生成的类中的属性完全匹配,但您不必复制所有属性,只需复制您需要的属性即可。因此,如果您只想使属性“姓氏”成为必需,只需添加

    [必需] public string Lastname { get;set; }

到你的班级

于 2013-04-29T11:10:28.647 回答
0

只是对于那些试图通过@Html.EditorFor 实现它的人,似乎无法传递一些 htmlAttributes,不要像我现在 2 小时那样将 'additionalViewData' 与 'htmlAttributes' 误认为 :@

于 2016-03-09T14:04:06.693 回答