1

我有一个网络表单(c# asp.net mvc 4),用户可以在其中输入一些数字。这是模型的一部分代码:

[Range(1, Int32.MaxValue)] 
public int? MyVariable { get; set; }

但是,当用户输入比 maxint 更多的值时,这一点并没有帮助,例如 '999999999999'。在这种情况下,我在服务器上有一个异常值超过了最大 int。有没有办法验证这种情况?我看到两种方法,但都不喜欢两者:

  • 单击提交按钮后,使用 javascript 检查值是否超过 2,147,483,647。如果更多我不提交并显示错误消息。此外,我需要在页面上为其创建 div,当您有 40 个输入时,这不是一个好主意。
  • 将我的输入的输入字符数限制为 9 个字符。所以用户不能输入超过 9 位数字并且永远不会超过最大 int 大小。我也不喜欢这个解决方案。

希望有人有更好的。

4

1 回答 1

3

Range自己能够MVC validation验证我们不需要做任何特别的事情。

这就是我所做的,它完全符合要求。

模型

public class IndexModel
{
    [Range(1, Int32.MaxValue)]
    public int? MyVariable { get; set; }
}

控制器

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

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

看法

@model MvcApplication2.Models.IndexModel
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
@using (Html.BeginForm())
{ 
    @Html.TextBoxFor(m => m.MyVariable)
    @Html.ValidationMessageFor(m => m.MyVariable)

    <input type="submit" id="submit" value="submit" />    
}
于 2013-04-22T12:47:34.843 回答