ErrorMessage属性

时间:2013-12-04 07:45:56

标签: asp.net-mvc editorfor

我有一个包含清单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>

1 个答案:

答案 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; }