【问题标题】:Form validation in model模型中的表单验证
【发布时间】:2019-05-02 09:15:53
【问题描述】:

我正在一个 .Net Core MVC 边做边学的过程中尝试在模型中进行表单验证,但它没有按预期工作。

在模型中:

namespace VPV.Models {
    public class Event : IValidatableObject {

        [Required(ErrorMessage = "Feltet 'Start' er obligatorisk")]
        [DisplayFormat(DataFormatString = "{0:g}", ApplyFormatInEditMode = true)]
        [DataType(DataType.DateTime, ErrorMessage = "Der er ikke angivet en gyldig 'Start'")]
        public DateTime StartDateTime { get; set; }

    }
}

在表格上:

<div asp-validation-summary="All"></div>

和:

<input asp-for="Event.StartDateTime" type="text" class="form-input fv-req" />

问题是,如果我将 StartDateTime 字段留空,屏幕上的错误消息是“值 '' 无效”,而不是我在模型中键入的错误消息。

另外,当在字段中输入无效的日期时间值时,错误消息是“值 '15/11/2019 09.81' 对 StartDateTime 无效” - 我再次想要我自己的错误消息。

我做错了什么?

【问题讨论】:

  • 只是为了确定:您正在使用定义这些验证规则的类作为视图的模型,对吗?您是否引用了正确的 JS 库?查看Model Validation 文档。
  • 我已经用我的代码的更多细节更新了这个问题。现在在测试/学习阶段,我只做服务器端验证。需要JS吗?我已阅读模型验证文档。我在我的代码中遗漏了一些重要的东西吗?同样,验证工作,但不是我自己的错误消息。

标签: .net validation asp.net-core model


【解决方案1】:

DateTime 类型有一个默认值。这就是为什么 required 属性没有触发。我总是做的是,如果我期望一个属性为空或为空,我将其设为可空。

例如

DateTime? StartDateTime

希望这会有所帮助。

【讨论】:

  • 这有助于空字段部分。谢谢!我仍然收到默认的无效错误“值 '15/11/2019 09.81' 对于 StartDateTime 无效。”而不是我自己的。你也可以帮忙吗?
  • 抱歉回复晚了,好像其他人也遇到了这个问题。我看到有人对他们的日期进行了自定义验证。检查此链接。 stackoverflow.com/a/12277814/1362850。这可能会有所帮助。
  • 感谢您的回复和链接。很高兴看到,问题不只是我。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多