.NET MVC 本地化和全球化
我继续使用 MVC Web 应用程序,现在我处于 DRY(不要重复自己)和 解耦(独立)的概念之间。
我将我的大网站划分为一个解决方案中的不同项目,正如您可能已经知道的那样,在 MVC 中,验证是在模型或服务层中完成的,在我的例子中,它位于与保存 App_GLobalResources 的项目不同的项目中,事情是这样的:
我如何从不同的项目访问GLobalResources
,以便我可以访问字符串以在服务层中的模型上设置错误?
到目前为止,我创建了一个新项目,例如独立的 resx
文件,并编译它们以设置对 DLL 的引用,但它不起作用,因为主要的 resx
文件是内部文件或私人。
我尝试了其中一个自定义工具来公开 resx 文件(跨程序集可用),但它也不起作用,因为它会抛出:
未找到匹配的文化
到目前为止最好的方法是为模型项目创建一个 resx 文件,它效果很好,但我重复相同的字符串两次,一次用于视图(在客户端设置 jQuery 字符串验证错误) )和另一个模型验证(服务器端),这些给我带来了解耦的好处,但是在这种情况下 DRY 会发生什么?
有什么建议或提示吗?
I continue with a MVC Web App, and now I'm between the concepts of DRY (dont repeat yourself) and decoupling (be independent).
I divided my big Web Site in diferent projects within a Solution, and as you may already know in MVC the Validations are done in the Model or Service Layer, that in my case its in a diferent project than the one holding the App_GLobalResources
, and here is the thing:
How can i access the GLobalResources
from a different project, so I can access the strings to set the errors on the model in the service layer?
So far i created a new project like stand-alone resx
files and complied them to set the reference to the DLL but it doesnt work, because the main resx
files are internals or privates.
I tried one of those custom tools to make resx files public (cross assembly avaiblable) but it didn't work either, because it throws:
No matching culture found
The best aproach so far is to create a resx file just for the Model Project and it works good, but I'm repeating the same strings twice, one for the Views (to set the jQuery string validation errors on client side) and another one for the Model Validations (server side), these give me the benefit of decoupling, but what happen with DRY in this case?
Any advise or tips?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我决定遵循两个单独的 resx (用于字符串),一个用于视图和视图。 控制器和另一个模型 - >服务层,我使用服务层进行验证,所以我隔离该层,这样我就可以重用“服务”层或(BLL)层,以一种我可以重用它的方式稍后在诸如 WPF 应用程序之类的东西中,没有任何对视图或控制器的 resx 的引用。 所以解耦在这里获胜...=)
Well i have decided to follow two separetes resx (for strings), one for the Views & Controllers and another for the Model->Service layer, Im using a service layer for validation, so i isolate that layer, in that way i can reuse the layer "Service" or (BLL), in a way that i can reuse it later in somthing like a WPF app, with out any reference to the resx of the Views or Controller. SO decoupling won here ... =)