Asp.net mvc 4 MVC4模型绑定和整数/小数溢出

Asp.net mvc 4 MVC4模型绑定和整数/小数溢出,asp.net-mvc-4,model-binding,integer-overflow,Asp.net Mvc 4,Model Binding,Integer Overflow,假设我创建了一个属性为int?type的模型 public class MyModel { [Range(-100, 100, ErrorMessage="Too large")] public int? MyValue { get; set; } } 在视图中,我将其用作表单中的文本框,以便发回服务器 @using (Html.BeginForm()) { <p>Enter some value</p>

假设我创建了一个属性为
int?
type的模型

public class MyModel
{
    [Range(-100, 100, ErrorMessage="Too large")]
    public int? MyValue { get; set; }
}
在视图中,我将其用作表单中的文本框,以便发回服务器

    @using (Html.BeginForm())
    {
        <p>Enter some value</p>
        <div>@Html.TextBoxFor(m => m.MyValue)</div>
        <div>@Html.ValidationMessageFor(m => m.MyValue)</div>
        <input type="submit" value="Submit" />
    }
现在,如果我在文本框中输入一个非常大的数字,例如
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111。回邮时,收到的消息
值“111111111111111111111111111111111111111111111111111111111111111111111111111111”无效。

但我无法使用我在模型中定义的错误消息(本地化等)

using System.ComponentModel.DataAnnotations;
    public class MyModel
{
    [Range(int.MinValue, int.MaxValue)]
    public int? MyValue {get; set; }
}

这就应该做到了。

除非您正在进行客户端验证,否则您的用户也可以轻松地在文本框中输入'abcdefg'。您应该在控制器上检查
ModelState.IsValid
,并在输出到用户时处理false。但实际上,您也应该在客户端做一些事情,在文本框中只允许数字,并设置一个上限?是的,模型状态肯定是无效的。这只是我的测试代码,我还是忽略了它。因为您输入的值超出了
int
的范围,所以
无效
错误首先生成(在您的
范围
验证之前),我已更新了原始问题的详细信息。
using System.ComponentModel.DataAnnotations;
    public class MyModel
{
    [Range(int.MinValue, int.MaxValue)]
    public int? MyValue {get; set; }
}