【问题标题】:ASP.NET Core: How to localize Html.ValidationMessage?ASP.NET Core:如何本地化 Html.ValidationMessage?
【发布时间】:2017-05-16 09:34:03
【问题描述】:

我在.cshtml 文件中使用以下 sn-p:

@Html.ValidationMessage("loginError")

这在我的Controller:

ModelState.AddModelError("loginError", message);

现在我想在我的视图中本地化消息(而不是在控制器中)。

对于标准文本,我使用这个:

@Localizer["Login"]

如何本地化ValidationMessage?我可以从中获取原始消息并将其发送给我的Localizer 还是有更好的方法?

【问题讨论】:

  • 您想自己本地化这条消息? message 只是一个字符串,所以你应该把本地化字符串放在那里
  • @teovankot 感谢您的回答!我知道message 只是一个字符串,但该字符串在我的Controller 中我可以,但我不想在那里进行本地化,因为我已经在.resx 文件中添加了所有翻译对于.cshtml 视图
  • 你不想在控制器中这样做吗:ModelState.AddModelError("loginError", Localizer.LoginError);?
  • @teovankot 不,因为我不想仅为此将 Localizer 对象 DI 到我的 Controller 中。我还必须添加一个新的.resx 文件...

标签: asp.net asp.net-mvc razor asp.net-core localization


【解决方案1】:

好的,这是我的建议,但它是一个 hack:

@Localizer[@ViewData.ModelState["loginError"]?.Errors[0].ErrorMessage ?? ""]

在我的视图中使用它。但我愿意接受更好的解决方案...

【讨论】:

    【解决方案2】:

    我想我找到了更好的解决方案:

    1. 注入 IStringLocalizerFactory 工厂
    2. 创建本地化器:_localizer = factory.Create(typeof(LoginModel));
    3. ModelState.AddModelError("loginError", message);

    将消息存储在包含模型类型特定验证消息的资源文件中。

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多