gpt4 book ai didi

c# - MVC 验证消息国际化

转载 作者:行者123 更新时间:2023-11-30 13:47:55 27 4
gpt4 key购买 nike

例如,我想要这个默认的 ASP.NET MVC 4 验证消息:The value 'qsdqsdqs' is not valid for Montant以法语显示。

我找到了这个包 http://nuget.org/packages/Microsoft.AspNet.Mvc.fr/并安装了它,但如何让它工作?

我添加了 <globalization culture="fr-FR" uiCulture="auto:fr" />到 web.config 并引用了 dll,但消息仍然是英文

最佳答案

首先,您应该像这样将消息保存在资源文件中:

Resources/ErrorMessages.resx // default messages
Resources/ErrorMessages.fr.resx // for french

在服务器端,它很容易变化,您可以通过向模型添加属性来实现。这样做:

[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages), ErrorMessageResourceName = "FieldRequired")]

其中 "FieldRequired"Resources.ErrorMessages

中的字段之一

棘手的部分是当您希望客户端验证也能正常工作时。您必须创建自己的属性类,它扩展其中一个属性,并且还实现 IClientValidatable

你是这样的:

public class CustomRequiredAttribute : RequiredAttribute, IClientValidatable
{
public override string FormatErrorMessage(string name)
{
return String.Format(ErrorMessages.FieldRequired, name);
}

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRequiredRule(String.Format(ErrorMessages.FieldRequired, metadata.DisplayName));
return new[] { rule };
}
}

从现在开始,您在模型中使用 CustomRequired 而不是 Required。您也不必每次都指定消息。

编辑

现在我看到了您对 SynerCoder 的回答的评论 - 您不想自己翻译消息。好吧,我认为这不是正确的方法。即使您找到可以为您翻译标准消息的东西,它也不会翻译任何自定义消息,因此您最终可能会混合使用两种方法。这通常会导致你不知道如何咬人的魔法错误。我强烈建议您自己进行翻译(这没什么可做的——大约 20 次左右?)。好处将是一个灵活的解决方案,不会出现意外错误。

关于c# - MVC 验证消息国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709342/

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