【问题标题】:Disable ASP.NET MVC validation禁用 ASP.NET MVC 验证
【发布时间】:2012-10-22 23:46:07
【问题描述】:

我的 asp.net mvc 应用程序中有一个简单的 ViewModel 类。

public class DestinationViewModel
{
     [Display(Name = "Country")]
     [some validation attributes]
     public string CountryName { get; set; }

     [Display(Name = "Destination")]
     [some validation attributes]
     public string DestinationName { get; set; }

     public DateTime? DepartureDate { get; set; }

     public DateTime? ArrivalDate { get; set; }
}

当我将数据传递给控制器​​时,我的应用程序显示无效出发和到达日期的验证错误。但我不想要这样的行为。是否有任何方法(属性)仅在 DepartureDate 和 ArrivalDate 字段上禁用验证?

【问题讨论】:

  • 验证信息是什么?日期时间无效?
  • @jrummell 通常的 ASP.NET 验证消息:“值 '21321' 对 ArrivalDate 无效。”

标签: asp.net-mvc validation


【解决方案1】:

MVC 数据绑定器将尝试将您在输入字段中输入的值转换为其对应的 ViewModel 类型。在您的场景中,您传递的是“21321”,这显然不起作用,因为它不是有效的日期/时间。

要么传递一个有效的DateTime 字符串值,要么将其留空(因为该字段可以为空)。

提示 - 从用户的角度来看,将日期字段设为只读并提供某种日期选择器以避免手动输入有效日期格式时出现问题,这通常是一个好主意。

【讨论】:

  • 当然我可以写来输入任何值,但我的应用程序的用户并不那么小心。还有我的 PM。
  • 您也可以尝试定义自己的 LooseDateTime 类型,然后为其编写自定义模型绑定器。这为您提供了您所寻求的最大灵活性。
  • @Neir0 不是验证的重点,以确保用户仔细输入输入值?
  • @Neir0 这正是我的意思,不要让用户输入他们自己的值作为日期,因为如果你改变了格式等,它会影响最终用户。
【解决方案2】:

如果你想写任何你想写的东西,那么请使用string,而不是DateTime?,或者使用以下解决方案之一:

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    相关资源
    最近更新 更多