不显眼的验证RANGE不起作用

时间:2012-08-21 16:01:12

标签: asp.net-mvc-3

我正在做一个MVC 3应用程序。我有一个[Range(1, 175, ErrorMessage="Invalid")]的模型。

在其中一个控制器上,视图与所有标记完美呈现以进行验证。在具有相同设置的第二个控制器上,在下拉列表中执行的范围验证不会出现在html标记上。我在config.web上验证并且unostrusiveValidation为true。我正在使用LINQTOSQL,我已经完成了一个部分类来添加其他元数据。该字段确实选取[Display(Name="State")],但范围不是。

 <tr>
            <td>@Html.LabelFor(x => x.carta.INVprovincia)</td>
            <td>@Html.DropDownListFor(x => x.carta.INVprovincia, Model.provinciaItems, new { @class = "ddlsmall" }) <br /> @Html.ValidationMessageFor(x => x.carta.INVprovincia)</td>
        </tr>
        <tr>
            <td>@Html.LabelFor(x => x.carta.INVmunicipio)</td>
            <td>@Html.DropDownListFor(x => x.carta.INVmunicipio, Model.municipiosItems, new { @class = "ddlsmall" }) <br /> @Html.ValidationMessageFor(x => x.carta.INVmunicipio)</td>
        </tr>

1 个答案:

答案 0 :(得分:1)

Html.XXX帮助程序不会生成不显眼的验证框架使用的HTML5 data-*属性,如果它们不在您的情况下的表单中。我猜这个表单包含在父视图中。这个错误(恕我直言)在ASP.NET MVC 4中得到修复。一个可能的解决方法是将以下内容放在部分视图中以伪造表单并让帮助者相信它们在表单中:

@{
    ViewContext.FormContext = new FormContext();
}