【问题标题】:ASP MVC Validate timeASP MVC 验证时间
【发布时间】:2014-10-07 08:26:06
【问题描述】:

我正在尝试创建自定义数据注释时间验证器来验证日期时间时间字段。我希望它在客户端上验证。 我在这个网站上找到了一个例子,但我认为它的一部分丢失了。 我确实相信我创建的类正在部分工作,因为它似乎正在验证新创建的条目,但在编辑时不验证。 还 我正在使用带有 jquery-ui-timepicker-addon.js 的时间选择器。

I also have added this to my web.config 
 <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

我已将 jquery.validate.unobtrusive.js" 添加到我创建的时间选择器包中。 您将在下面找到我的模型、我创建的 TimeAttribute 类和我的 Edit cshtml。
非常感谢任何帮助

    [DisplayName("Injury Time")]
    [DataType(DataType.Time)]
    [Time]
    [DisplayFormat(DataFormatString = "{0:hh:mm tt}", ApplyFormatInEditMode = true)]
    public Nullable<System.DateTime> InjuryTime { get; set; }

` 公共类 TimeAttribute : ValidationAttribute, IClientValidatable { 公共 IEnumerable GetClientValidationRules(ModelMetadata 元数据,ControllerContext 上下文) { 产量返回新的 ModelClientValidationRule { 错误消息 = 错误消息, ValidationType = "时间" }; }

public override bool IsValid(object value)
{
    DateTime time;
    if (value == null || !DateTime.TryParse(value.ToString(), out time))
        return false;

    return true;
}

} `
@Html.LabelFor(model => model.InjuryTime, new { @class= "control-label col-md-2" }) @Html.EditorFor(model => model.InjuryTime) @Html.ValidationMessageFor(model => model.InjuryTime)

【问题讨论】:

    标签: validation


    【解决方案1】:

    保持简单。使用您创建的 [Remote] 验证属性。

    有一个例子:

    型号:

    [DisplayName("Injury Time")]
    [DataType(DataType.Time)]
    [Remote("CheckTime", "Home", ErrorMessage = "Please check this field")]
    [DisplayFormat(DataFormatString = "{0:hh:mm tt}", ApplyFormatInEditMode = true)]
    public Nullable<System.DateTime> InjuryTime { get; set; }
    

    Home 是您的控制器。

    控制器:

    public ActionResult CheckTime(Nullable<System.DateTime> InjuryTime)
            {
                if (InjuryTime == something)
                {
            // This show the error message of validation
                    return Json(true, JsonRequestBehavior.AllowGet);
                }
                else
                {
            // This will ignore the validation
                   return Json(false, JsonRequestBehavior.AllowGet);
                }
            }
    

    就这么简单。不得对视图进行任何修改。 欢迎随时提问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多