public Decimal SalePrice { get; set; }
<%= Html.TextBoxFor(Model => Model.SalePrice) %>
是什么,以确保从用户的验证或正确输入条目的好办法?像只允许数字输入和最多两个小数点的东西?
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
而且,正如迈克建议,你可以在数据验证属性中使用它:
[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)这证实对提交权利,而不是当我们失去的那场焦点?
假设您添加的所有属性都是该属性,则验证是在提交时发生的。从技术上讲,一旦表单参数绑定到模型,验证就会发生。然而,实际利用这一点,你需要检查验证参数在你的控制器:
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
你也许可以做到这一点的正则表达式莫名其妙,但正则表达式是不是真的设计的任何东西多于模式匹配。除了regex属性,更好的方法是添加一个范围验证属性。所以现在你的财产看起来像:
[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; }
上述代码是未经测试,但一般的方法应该工作。
您可以使用正则表达式字符串来验证客户端和服务器端的输入。
如果您在控制器操作上放置了RegularExpression属性,则可以使用正则表达式字符串指定该字段需要遵循的格式。通过使用该属性,您将获得客户端和服务器端验证(假设您使用的是MVC 2.0或更高版本)。
[RegularExpression("*YourRegexExpression*", ErrorMessage="You must provide a decimal value.")]
我希望有帮助。
请参阅Scott Gu的博客文章,其中介绍了有关模型验证的更多信息。
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
迈克
感谢和很好的解释。我一定会尝试一下。 – VoodooChild 2010-12-05 01:32:00