MVC 4客户端字段验证字段列表(而不是作为类成员的字段)

时间:2013-03-13 15:07:48

标签: asp.net-mvc asp.net-mvc-4 validation

我是一名很长时间的后端.Net开发人员,他是Web应用程序开发的新手。我正在使用MVC 4,Razor,EF 5,我对如何使用这些工具制作一个例程DB驱动的MVC 4站点有基本的了解。

我需要为工作流场景创建自定义表单功能。我有完整的代码优先架构和不同的formfield类型的类,以及formvalue类型。

将传递给视图的模型将是一个带有formvalue列表的表单类,其中包含表单字段规范。因此,视图必须遍历表单字段并动态选择要使用的编辑器等等。

我的问题是,这使我无法使用任何数据注释进行客户端验证。我发现自定义验证建议的每个地方(毫不奇怪)假设所有字段都是类的成员。然而,在这种情况下,所有字段都在列表中。

我的目标是最终得到每个字段的验证消息和验证摘要,就像视图只是绑定到带注释的类一样。

有关如何处理此问题的任何建议?提前谢谢。

想象一下具有以下内容的视图逻辑:

@foreach (var fieldvalue in Model.FormFieldValues) {

    // Logic that chooses the appropriate editor based on typeof(fieldvalue.FormField)
    // Binds the editor to fieldvalue.Value
    // Validation specs are contained in the Formfield obtained by fieldValue.FormField
    // And my problem is setting up the validation without the aid of the normal method 
    //   of data annotation or class level custom validation.
}

并且fieldvalue类看起来像这样:

public class FormFieldValue : EboEntity 
{ 
    public string Value { get; set; } 

    [Required] 
    public int FormFieldId { get; set; }

    [Required]
    public virtual FormField FormField { get; set; }

    [Required]
    public int FormId { get; set; }

    [Required]
    public virtual Form Form { get; set; }
}

并且假设FormField对象具有诸如Required,Maxlength等字段,具体取决于它的字段类型(即FormFieldText将是FormField的子类)

解答:

好的,你可以说我是MVC新手。

我的问题的答案是特定的编辑器采用可以控制验证的htmlAttributes。因此,如果我的一个表单字段是stringlenth(10)的必需文本字段,我可以按如下方式调用编辑器:

    <div class="editor-field">
        @Html.TextBoxFor(model => model.NoTexty, new { 
                                                        required = true,
                                                        maxlength = 10,
                                                        placeholder = "Texty"})
        @Html.ValidationMessageFor(model => model.NoTexty)
    </div>

但在我的情况下,htmlAddtributes不会被硬编码,而是来自formvalue.FormField对象中的字段。

对不起,如果我浪费了任何人的时间。但我会把这个留给像我这样的其他新手。

0 个答案:

没有答案