【发布时间】:2026-01-04 06:10:02
【问题描述】:
希望这不是一个太愚蠢的问题。在 MVC 中,视图中似乎有很多本地化支持。但是,一旦我到达控制器,它就会变得模糊不清。
- 使用 meta:resourcekey="blah" 已淘汰,与 相同。
-
ASP.NET MVC - Localization Helpers -- 建议对 Html 助手类进行扩展,例如
Resource(this Controller controller, string expression, params object[] args)。同样,Localize your MVC with ease 建议使用稍微不同的扩展名,例如Localize(this System.Web.UI.UserControl control, string resourceKey, params object[] args)
这些方法在控制器中都不起作用。我将以下函数放在一起,并使用控制器的完整类名作为我的 VirtualPath。但我是 MVC 的新手,我认为有更好的方法。
public static string Localize (System.Type theType, string resourceKey, params object[] args) {
string resource = (HttpContext.GetLocalResourceObject(theType.FullName, resourceKey) ?? string.Empty).ToString();
return mergeTokens(resource, args);
}
想法?评论?
【问题讨论】:
-
我认为本地化是不应该成为控制器逻辑一部分的一个方面。由于这是一个特定于演示的方面,我认为无论您选择哪种方法,您都应该让您的视图负责解决这个问题。我知道这并不能回答您的问题,但至少可以提示您做出决定。
-
@uvita 请查看我对@LukLed 的回复。我还想补充一点,将本地化作为视图的一个问题是一个合理的架构决策,尽管这种类型的策略迫使我在我的控制器或验证服务层中收集一个键/令牌列表,以便它们可以在我的视图中传递通过 ViewData。此外,据我所知,这意味着我的视图将不得不填充 ModelState 错误或放弃 Html.ValidationMessage() 基础结构。这不会比在服务层中本地化更破坏视图的职责吗?
标签: asp.net-mvc model-view-controller localization internationalization