为什么MVC没有检查我的数据注释?

时间:2012-01-05 06:10:46

标签: asp.net-mvc asp.net-mvc-3

我有以下一套:

public class Account : AuditableTable, IAccount  
{
}
public class Product : AuditableTable  
{
}
public abstract class AuditableTable

    [Range(0, 99, ErrorMessage = "Position must be between 0 and 99.")]
    [DisplayName("Position")]
    public int? Position { get; set; }

在我看来:

        <div class="adm_td0">
        @Html.TextBoxFor(model => model.Account.Position, new { size = 4 })
        </div>
        <div class="adm_td0">
        @Html.ValidationMessageFor(model => model.Account.Position)
        </div>

当我输入大于99的数字时,接受该数字。有谁知道为什么会这样?当我检查我的源代码时,我看到了

<input id="Product_Position" type="text" value="24788" size="4" name="Product.Position" data-val-range-min="0" data-val-range-max="99" data-val-range="Position must be between 0 and 99." data-val-number="The field Position must be a number." data-val="true">

但是没有检查页面上或服务器上的内容。

在页面上,我包含了以下Javascripts:

"~/Scripts/jquery/jquery-1.6.1.min.js"

我想我错过了什么,所以没有客户验证。但是仍然没有服务器验证吗?

如果我在客户端上进行验证,那么我是否需要包含以下所有内容:

"~/Scripts/jquery.unobtrusive-ajax.min.js"
"~/Scripts/jquery.validate.js"
"~/Scripts/jquery.validate.unobtrusive.js"

1 个答案:

答案 0 :(得分:0)

尝试将您的查看代码更改为:

@Html.EditorFor(model => model.Account.Position)

应该有效

此外,您需要包含

  

“〜/脚本/ jquery.unobtrusive-ajax.min.js”

     

“〜/脚本/ jquery.validate.js”

     

“〜/脚本/ jquery.validate.unobtrusive.js”

否则您的验证将无法在该页面上使用