MVC4模型绑定和int / decimal溢出

时间:2015-04-01 14:38:14

标签: asp.net-mvc-4 model-binding integer-overflow

我们说我创建了一个属性为int?类型的模型。

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" />
    }

这是控制器代码

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyModel model)
    {
        return View(model);
    }
}

现在,如果我在文本框中输入一个非常大的数字,例如111111111111111111111111111111111111111111111111111111111111111111111111111111,这对于整数数据类型肯定太大了。在回帖后,得到消息The value '111111111111111111111111111111111111111111111111111111111111111111111111111111' is invalid.

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

1 个答案:

答案 0 :(得分:1)

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

这应该可以解决问题。