我正在开发一个使用ASP.NET MVC3作为前端的应用程序,它通过接口与服务层进行通信。所有接口/服务都通过ninject和构造函数注入注入控制器。
我想通过ninject提供的位置服务来汇集所有本地化。
在控制器端很容易,我在控制器基类中添加了一个Localize函数,并将ILocalizeService添加到构造函数中,瞧,完成了。无论何时我需要本地化字符串,我都可以调用localize函数,然后调用该服务。
现在我想在View端找出一个干净的方法来做到这一点。我有一个基本View类,它暴露了一个Localize函数,就像在控制器中一样,所以我可以在视图上传递任何静态文本,但我无法想出一个干净的方法来获取我的本地化服务的实例。我读了很多帖子说DI进入视图是不好的做法,但在这种情况下我认为基本视图是在视图中集中文本本地化的最干净的地方(当然,我会接受任何其他选项,不需要我传递我的内核)
任何有人可以指出我或如何干净利落地建议的例子。
答案 0 :(得分:2)
Ninject允许将属性注入视图。但这是不好的做法。你应该在视图中尽可能少地做。
我认为主要问题在于您使用自定义本地化服务而不是使用标准方法之一来使用资源文件或每种语言的自定义视图。见this excellent blog post by Scott Hanselman
或者是否有任何特殊理由以自己的方式处理本地化?