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; }
}