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