新聞中心
這里要介紹一款與企業(yè)庫(kù)VAB(Validation Application Block),ASP.NET MVC基于Attribute聲明式驗(yàn)證所不同的驗(yàn)證組件,F(xiàn)luentValidation,其利用表達(dá)式語(yǔ)法鏈?zhǔn)骄幊?,使得?yàn)證組件與實(shí)體分開(kāi)。我喜歡他的原因是喜歡表達(dá)式,喜歡鏈?zhǔn)降母杏X(jué),大有一氣呵成之意。

為肇州等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及肇州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、肇州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
進(jìn)入今天的主題首先如果你還沒(méi)有這款組件,你可以利用VS2010的NuGet安裝,(如果不會(huì)的請(qǐng)安裝上篇開(kāi)源DataBase組件:FluentMigrator中提到的方式安裝),命令為:
現(xiàn)在我們可以開(kāi)始體驗(yàn)了,實(shí)體類(lèi)do任然是上節(jié)的Orders:
do:
- public class Orders
- {
- public int ID { get; set; }
- public string CustomerID { get; set; }
- public decimal DisCount { get; set; }
- public DateTime OrderDate { get; set; }
- }
驗(yàn)證邏輯:
- public class OrdersValidator:AbstractValidator
- {
- public OrdersValidator()
- {
- RuleFor(orders => orders.CustomerID).NotEmpty().Length(2, 20).WithName("CustomerID");
- RuleFor(orders => orders.DisCount).GreaterThanOrEqualTo(0).LessThan(1).WithMessage("discount must between 0 and 1!");
- RuleFor(orders => orders.OrderDate.Date).GreaterThanOrEqualTo(DateTime.Now.Date).WithName("Order Date");
- }
- }
看見(jiàn)這樣的代碼你的感覺(jué)如何?現(xiàn)在式的語(yǔ)言講究的不僅在于功能,還有語(yǔ)義。
下面我們來(lái)寫(xiě)個(gè)簡(jiǎn)單的測(cè)試類(lèi)測(cè)試它:
- [TestMethod]
- public void TestMethod1()
- {
- var orders = new Orders(){DisCount = 2,CustomerID = "1", OrderDate = DateTime.Now.AddDays(-1).Date};
- IValidator validator = new OrdersValidator();
- var results = validator.Validate(orders);
- var validationSucceeded = results.IsValid;
- var failures = results.Errors;
- Assert.IsTrue(failures.Any(t => t.PropertyName == "CustomerID"));
- Assert.IsTrue(failures.Any(t => t.PropertyName == "DisCount"));
- Assert.IsTrue(failures.Any(t => t.PropertyName == "OrderDate.Date"));
- failures.ToList().ForEach(t=>Debug.WriteLine(t.ErrorMessage));
- }
|
標(biāo)題名稱(chēng):流暢的驗(yàn)證組件:FluentValidation
當(dāng)前網(wǎng)址:http://m.5511xx.com/article/dpcocdd.html


咨詢(xún)
建站咨詢(xún)
