新聞中心
【獨家特稿】ASP.NET MVC 2內(nèi)置支持在服務(wù)器上驗證數(shù)據(jù)注釋驗證屬性,本文介紹如何使用System.ComponentModel.DataAnnotations中的基礎(chǔ)類構(gòu)建自定義驗證屬性,關(guān)于ASP.NET MVC 2中數(shù)據(jù)注釋是如何工作的,請參考Brad的博客(http://bradwilson.typepad.com/blog/2009/04/dataannotations-and-aspnet-mvc.html)。

成都創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鞏義企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站制作,鞏義網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
#T#
我會介紹如何連接到ASP.NET MVC 2的客戶端驗證擴展,以便你可以在客戶端上運行JavaScript驗證邏輯。
我將創(chuàng)建一個PriceAttribute來驗證某個值是否大于指定的價格,并且這個價格必須以99分結(jié)束,因此$20.00是無效的值,$19.99是有效的。下面是這個屬性的代碼:
- public class PriceAttribute : ValidationAttribute {
- public double MinPrice { get; set; }
- public override bool IsValid(object value) {
- if (value == null) {
- return true;
- }
- var price = (double)value;
- if (price < MinPrice) {
- return false;
- }
- double cents = price - Math.Truncate(price);
- if(cents < 0.99 || cents >= 0.995) {
- return false;
- }
- return true;
- }
- }
注意如果值為空,返回的值是true,這個屬性不會驗證字段是否需要。我會在RequiredAttribute中驗證值是否需要。它允許我將屬性放在可選的值上,當(dāng)用戶將這個字段留為空時顯示一個錯誤。
我們可以創(chuàng)建一個視圖模型,然后應(yīng)用這個屬性到模型上進行快速測試,下面是這個模型的代碼:
- public class ProductViewModel {
- [Price(MinPrice = 1.99)]
- public double Price { get; set; }
- [Required]
- public string Title { get; set; }
- }
我們再快速地創(chuàng)建一個視圖(Index.aspx)顯示和編輯窗體:
- <%@ Page Language="C#" Inherits="ViewPage " %>
- <% using (Html.BeginForm()) { %>
- <%= Html.TextBoxFor(m => m.Title) %>
- <%= Html.ValidationMessageFor(m => m.Title) %>
- <%= Html.TextBoxFor(m => m.Price) %>
- <%= Html.ValidationMessageFor(m => m.Price) %>
- type="submit" />
- <% } %>
現(xiàn)在我們只需要一個有兩個行為的控制器,一個編輯視圖,另一個接收提交的ProductViewModel。
- [HandleError]
- public class HomeController : Controller {
- public ActionResult Index() {
- return View(new ProductViewModel());
- }
- [HttpPost]
- public ActionResult Index(ProductViewModel model) {
- return View(model);
- }
- }
我們還沒有開啟客戶端驗證,下面來看看當(dāng)我們查看這個頁面并提交一些值時會發(fā)生什么。
本文名稱:詳解ASP.NET MVC 2自定義驗證
分享地址:http://fisionsoft.com.cn/article/dpiihio.html


咨詢
建站咨詢
