0

在我必须进行验证之前,我已经使用这种将视图成功呈现为字符串的解决方案。这是观点:

@Html.TextBoxFor(m => m.OrderedQuantity, new { id="someid", name="somename", data_mini = "true", type = "number", @class = "orderedQuantity removeGroupsRequired" })

结果是什么:

<input class="orderedQuantity removeGroupsRequired" data-mini="true" data-val="true" data-val-number="The field Quantity:  must be a number." data-val-required="The Quantity:  field is required." id="someid" name="OrderedQuantity" type="number" value="0" />

我需要这个名字才能为不显眼的验证制定一些规则:

var form = $("#mydiv form");
form.validate(
    {
        rules: {
            somename: {
                required: true
            }
        },
        messages: {
            somename:
                {
                    required: "you must provide a quantity!"
                }
        }
    }
);
4

1 回答 1

0

name使用 TextBox 助手时不能设置属性。这是设计使然。所以不要尝试。这个助手被设计用来生成与你的视图模型属性匹配的输入字段名称的标记,以便在提交表单时,默认模型绑定器将能够将相应的值绑定到视图模型上的属性:

@Html.TextBoxFor(
    m => m.OrderedQuantity, 
    new { 
        id = "someid",   
        data_mini = "true", 
        type = "number", 
        @class = "orderedQuantity removeGroupsRequired" 
    }
)

输入字段的名称是OrderQuantity,因此您应该将其用于验证规则:

form.validate({
    rules: {
        OrderedQuantity: {
            required: true
        }
    },
    messages: {
        OrderedQuantity: {
            required: "you must provide a quantity!"
        }
    }
});

如果您希望能够使用与模型绑定的正确名称不同的自定义名称(OrderedQuantity),那么您将不得不编写自定义帮助程序或对标记进行硬编码(两者都是完全不推荐的解决方案) .

于 2013-09-10T11:12:38.697 回答