gpt4 book ai didi

asp.net-mvc - MVC 4 忽略 DefaultModelBinder.ResourceClassKey

转载 作者:行者123 更新时间:2023-12-02 05:05:06 44 4
gpt4 key购买 nike

使用 PropertyValueRequired 键将资源文件添加到 App_GlobalResources 并将 DefaultModelBinder.ResourceClassKey 更改为文件名对 MVC 4 没有影响。字符串 The {0} field is required 永远不会改变。我不想在每个必填字段上设置资源类类型和键。我错过了什么吗?

编辑:

我对 Darin Dimitrov 的代码进行了一些小修改,以保持所需的自定义功能正常工作:

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute
)
: base(metadata, context, attribute)
{
if (attribute.ErrorMessageResourceType == null)
{
attribute.ErrorMessageResourceType = typeof(Messages);
}
if (attribute.ErrorMessageResourceName == null)
{
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
}

最佳答案

这不是 ASP.NET MVC 4 特有的。ASP.NET MVC 3 中也是如此。您无法使用 DefaultModelBinder.ResourceClassKey 设置所需的消息,只能使用 PropertyValueInvalid

实现您正在寻找的目标的一种方法是定义自定义RequiredAttributeAdapter:

public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute
) : base(metadata, context, attribute)
{
attribute.ErrorMessageResourceType = typeof(Messages);
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}

您将在Application_Start中注册:

DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter)
);

现在,当非空字段未分配值时,错误消息将来自 Messages.PropertyValueRequired,其中 Messages.resx 必须在 内定义App_GlobalResources

关于asp.net-mvc - MVC 4 忽略 DefaultModelBinder.ResourceClassKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545176/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com