Validation ASP.NET MVC验证
因此,我使用Fluent validation进行视图模型验证,并在现场验证时进行服务层验证,但我的问题是,如何处理诸如“您的信用卡被拒绝”之类的错误,这些错误与输入验证以外的逻辑有关?被拒绝的信用卡不是验证错误,相反,它是付款处理尝试的结果。例如,假设您有一个支付网关服务,该服务返回PaymentProcessInResult类,该类的状态可以是“已批准”或“已拒绝”,并带有拒绝的可能原因:Validation ASP.NET MVC验证,validation,asp.net-mvc-3,Validation,Asp.net Mvc 3,因此,我使用Fluent validation进行视图模型验证,并在现场验证时进行服务层验证,但我的问题是,如何处理诸如“您的信用卡被拒绝”之类的错误,这些错误与输入验证以外的逻辑有关?被拒绝的信用卡不是验证错误,相反,它是付款处理尝试的结果。例如,假设您有一个支付网关服务,该服务返回PaymentProcessInResult类,该类的状态可以是“已批准”或“已拒绝”,并带有拒绝的可能原因: class PaymentProcessingResult { bool IsApproved
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 dictionary存储下一个请求的消息