我有:
public class StudentDto
{
[Display(Name = "Data de Nascimento")]
public DateTime? Born { get; set; }
}
我正在使用jQuery datepicker
,每当我输入无效数据时,验证消息为:请输入有效日期。
如何更改此默认讯息?
我已经尝试过使用:
[DataType(DataType.Date, ErrorMessage = @"Valor inválido")]
我已尝试创建.resx
,并使用DefaultModelBinder.ResourceClassKey = "Strings";
,并使用.resx
创建的值:InvalidPropertyValue
,Common_ValueNotValidForProperty
,{ {1}}
这些都不起作用。
谢谢!
答案 0 :(得分:3)
以下对我来说很好:
型号:
public class StudentDto
{
[Display(Name = "Data de Nascimento")]
[Required(ErrorMessage = "Some custom message for required date")]
public DateTime? Born { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new StudentDto());
}
[HttpPost]
public ActionResult Index(StudentDto dto)
{
return View(dto);
}
}
查看:
<script type="text/javascript">
$(function () {
$('#Born').datepicker();
});
</script>
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.Born)
@Html.EditorFor(x => x.Born)
@Html.ValidationMessageFor(x => x.Born)
<button type="submit">OK</button>
}
Global.asax中的 Application_Start
:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
DefaultModelBinder.ResourceClassKey = "Strings";
}
和~/App_GlobalResources/Strings.resx
内部定义了在输入无效日期时将使用的密钥PropertyValueInvalid
。对于该值,您可以使用{0}
和{1}
占位符,这些占位符将分别替换为字段的值和显示名称。
答案 1 :(得分:1)
使用DefaultModelBinder.ResourceClassKey = "Strings";
进行绑定验证(forums.asp.net/post/3607981.aspx)和ClientDataTypeModelValidatorProvider.ResourceClassKey = "Strings";
进行不显眼的验证。
Strings
- 位于App_GlobalResources
文件夹(~/App_GlobalResources/Strings.resx
)中的资源文件的名称。