c# - 在 ASP.NET MVC (3) 中使用数据注释验证时是否可以生成属性的计算值?

标签 c# asp.net-mvc validation asp.net-mvc-3 data-annotations

如标题所述,在 ASP.NET MVC 中使用数据注释验证时是否可以生成属性的计算值(3)?

考虑信用卡示例。信用卡必须有到期日期,通常为月和年。在用户界面中,通常最好有选择字段供用户选择,而不是文本字段。然而,另一方面,当将数据发送到支付网关时,它通常是多种格式的一个字符串:M/Y; MM/YYMM/YYYY;等等

所以我想要完成的是在验证两个单独的日期后生成最终字符串。

无论如何,如果有人能指出我正确的方向,那就太棒了。我只使用了内置属性,所以我想当涉及到这样的自定义内容时,我想将我视为 nubski。

最佳答案

假设您有月份和年份属性:

[Range(1, 12)]
public int Month { get; set; }
[Range(2011, 2100)]
public int Year { get; set; }

您的 View 模型上可以有第三个属性,它代表所需的值:

public string ExpirationDate
{
    get 
    {
        return new DateTime(Year, Month, 1).ToString("MM/yyyy");
    }
}

因此,一旦您的 View 模型成功通过验证,您就可以将 ExpirationDate 属性发送到支付网关:

[HttpPost]
public ActionResult Pay(PayViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    PaymentGateway.Pay(model.CCNumber, model.ExpirationDate);
    return RedirectToAction("Success");
}

关于c# - 在 ASP.NET MVC (3) 中使用数据注释验证时是否可以生成属性的计算值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850770/

相关文章:

c# - 定期托管服务是否需要保持事件状态?

c# - 代表树的对象

c# - ASP.NET MVC : LogOut Heartbeat function

c# - .NET Core 2.0 MVC 文件上传进度

javascript - 在 jquery 验证期间向非输入元素添加样式

angularjs - 使用 AngularJs 中的所有字段验证表单

c# - 如果我想添加其他系统命名空间,为什么我需要调用每个命名空间?

C# 如何缩短这个超长的重载 do while 语句

asp.net - 尝试通过方法 'HttpConfiguration..ctor(HttpRouteCollection)' 访问方法 'HttpConfiguration.DefaultFormatters()' 失败

validation - 验证准确性/损失是否会影响 caffe 中的训练