【问题标题】:ASP.NET MVC ValidationASP.NET MVC 验证
【发布时间】:2011-03-03 07:49:47
【问题描述】:

因此,就字段验证而言,我使用 Fluent Validation 和我的服务层验证关闭了我的视图模型验证,但我的问题是你如何处理诸如“你的信用卡被拒绝”之类的错误,与输入验证以外的逻辑有关吗?

【问题讨论】:

    标签: validation asp.net-mvc-3


    【解决方案1】:

    信用卡被拒绝不是验证错误,而是付款处理尝试的结果。例如,假设您有一个支付网关服务,该服务返回一个 PaymentProcessingResult 类,该类的状态可以是已批准或已拒绝,并可能是拒绝的原因:

    class PaymentProcessingResult {
        bool IsApproved { get; set; }
        string DeclineReason { get; set; }
    }
    
    interface IPaymentGateway {
      PaymentProcessingResult ProcessPayment(PaymentInfo p);
    }
    

    然后在调用此支付网关服务的控制器中,您可以提供适当的响应:

    class CheckoutController : Controller {
    
      IPaymentGayeway paymentGateway;
    
      [HttpPost]
      public ActionResult ProcessPayment() {
         var paymentInfo = /* get payment info, from a shopping cart or the like */;
    
         var paymentResponse = this.paymentGateway.ProcessPayment(paymentInfo);
    
         if (paymentResponse.IsApproved) return View("PaymentReceipt");
         else return View("PaymentDeclined", paymentRespone);
    
      }
    }
    

    出于安全原因,请务必不要透露太多有关拒绝原因的信息。被拒绝的付款可以通过多种方式传达。您可以重定向回输入付款信息的页面,并在此处突出显示并显示一条消息,可能使用 TempData 字典来存储下一个请求的消息,而不是显示付款拒绝视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2010-09-24
      • 2015-02-26
      相关资源
      最近更新 更多