我有一个包含清单1之类属性的视图模型,以及清单2之类的视图。不显示DataType格式不正确时的ErrorMessage。相反,“字段预定日期/时间必须是日期”。当场失去焦点时显示。这个默认错误消息似乎是由@ Html.EditorFor生成的客户端验证脚本。如何设置它以使用我在ViewModel中编写的ErrorMessage?感谢。
Listing 1:
[Required(ErrorMessage = ":-("),
DataType(DataType.DateTime, ErrorMessage = "Not a valid date/time"),
Display(Name = "Scheduled Date/Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Scheduled_Date { get; set; }
Listing 2:
<p>
<span class="editor-label">Schedule Date/Time:</span>
@Html.EditorFor(model => model.Scheduled_Date)
@Html.ValidationMessageFor(model => model.Scheduled_Date)
</p>
答案 0 :(得分:0)
DataType属性不能用于验证用户输入。在你的情况下,MVC应该生成data-val- *属性,将HTML5消息映射到用户的请求。
与您提供的代码一样。
[Required(ErrorMessage = ":-("),
DataType(DataType.DateTime, ErrorMessage = "Not a valid date/time"),
Display(Name = "Scheduled Date/Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Scheduled_Date { get; set; }
MVC会将其生成为以下代码:
<input class="text-box single-line" data-val="true" data-val-date="The field Scheduled Date/Time must be a date." data-val-required=":-(" id="Scheduled_Date" name="Scheduled_Date" type="datetime" value=""/>
<span class="field-validation-valid" data-valmsg-for="Scheduled_Date" data-valmsg-replace="true"/>
用户将看到“字段预定日期/时间必须是日期”。如果他们在字段中输入了一些无效输入,则不是“不是有效的数据/时间”。
但是,我建议你使用Jquery Datepicker,它甚至不允许用户输入任何文本,而是一个有效的日期。
然后你的viewModel应该如下:
[Required(ErrorMessage = ":-("),
DataType(DataType.DateTime),
Display(Name = "Scheduled Date/Time")]
DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Scheduled_Date { get; set; }