模型中的表单验证

时间:2018-11-30 08:21:18

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

我处于.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字段留空,则屏幕上的错误消息是“值”无效”,而不是我在模型中键入的错误消息。

此外,当在字段中输入无效的datetime值时,错误消息为“值'15 / 11/2019 09.81'对于StartDateTime无效”-再次,我想输入自己的错误消息。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

DateTime类型具有默认值。这就是为什么必需属性未触发的原因。我总是做的是,如果我期望一个属性为null或为空,那么我将其设为可为空。

例如。

DateTime? StartDateTime

希望这会有所帮助。