asp.net - ASP MVC 中的十进制数据输入

标签 asp.net asp.net-mvc-2 jquery-plugins

public Decimal SalePrice { get; set; }


<%= Html.TextBoxFor(Model => Model.SalePrice) %>

什么是确保用户验证或正确输入输入的好方法?诸如只允许数字输入和最多两个小数点之类的东西?

最佳答案

像下面这样的正则表达式应该可以工作:

\A\d+(\.\d{1,2})?\Z

这匹配输入,如:
2.00
25.70
04.15
2.50
525.43
423.3
52

而且,正如 Mike 建议的那样,您可以在数据验证属性中使用它:
[RegularExpression(@"\A\d+(\.\d{1,2})?\Z", ErrorMessage="Please enter a numeric value with up to two decimal places.")]
public Decimal SalePrice { get; set; }

编辑:回答你的两个问题:

1)这在提交权上验证,而不是在我们失去该领域的焦点时验证?

假设您添加的只是属性,那么在提交时会进行验证。从技术上讲,一旦表单参数绑定(bind)到模型,就会发生验证。但是,要实际使用它,您需要检查 Controller 中的验证参数:
public ActionResult MyController(MyModel model)
{
    if (ModelState.IsValid)
    {
        // do stuff
    }
    else
    {
        // Return view with the now-invalid model
        // if you've placed error messages on the view, they will be displayed
        return View(model);
    }
}

除了服务器端之外,要在客户端进行验证,您需要使用 javascript。使用 Microsoft AJAX 验证的基本示例位于 Scott Gu's blog。 .

2) 你能告诉我最大输入不能超过 100.00 和最小输入不能低于 1.00 的正则表达式

您可能会以某种方式在正则表达式中执行此操作,但正则表达式并不是真正为模式匹配而设计的。一个更好的方法是添加一个范围验证属性,除了你的正则表达式属性。所以现在你的属性(property)看起来像:
[RegularExpression(@"\A\d+(\.\d{1,2})?\Z", ErrorMessage="Please enter a numeric value with up to two decimal places.")]
[Range(1.00m, 100.00m)]
public Decimal SalePrice { get; set; }

上面的代码未经测试,但一般方法应该有效。

关于asp.net - ASP MVC 中的十进制数据输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4351846/

相关文章:

c# - ASP.NET 3.5 GridView 行选择

c# - Moq Controller 测试重复设置

mysql - 使用 SQL Server Express 进行小型 MVC 项目有问题吗?

c# - MVC 映射到模型中可为空的 bool 值

javascript - 如何在 jquery 插件中停止传播()? (更新)

asp.net - Chrome 浏览器不显示 HTTP 处理程序生成的图像

c# - 从 Paypal 获取详细信息?

jQuery 倒计时插件不接受时间和日期

jquery - 鼠标悬停不适用于重叠元素

ASP.Net如何通过web.config文件(.htaccess类似)限制对特定IP地址的访问到特定页面?