您好我一直在尝试更改验证错误消息(在MVC3中)并阅读了很多线程并从this thread中找到:
但我不能让它发挥作用。这是一个干净的MVC 3 Web应用程序,我想更改验证消息。请让它为我和其他人一起工作。
here是我的测试项目的链接
答案 0 :(得分:0)
经过一些搜索和反复试验后,我使用了一些基于this blog post的代码。改编自以下代码。
在项目中添加一个新类:
using System.Web.Mvc;
public class FixedRequiredAttributeAdapter : RequiredAttributeAdapter
{
public FixedRequiredAttributeAdapter (ModelMetadata metadata, ControllerContext context, RequiredAttribute attribute)
: base(metadata, context, attribute)
{
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
// set the error message here or use a resource file
// access the original message with "ErrorMessage"
var errorMessage = "Required field!":
return new[] { new ModelClientValidationRequiredRule(errorMessage) };
}
}
通过更改global_asax
中的应用开始,告诉MVC使用此适配器:
protected void Application_Start()
{
...
DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(
typeof(RequiredAttribute),
(metadata, controllerContext, attribute) => new FixedRequiredAttributeAdapter(
metadata,
controllerContext,
(RequiredAttribute)attribute));
您可以使用错误消息执行更多操作,例如根据类/属性从资源文件获取:
var className = Metadata.ContainerType.Name;
var propertyName = Metadata.PropertyName;
var key = string.Format("{0}_{1}_required", className, propertyName);
使用MVC5进行测试。
更新:看起来这只适用于javascript / unobtrusive验证。如果您关闭javascript以获得回复验证,它仍会显示“{}字段是必需的”。