我目前在ASP.NET MVC项目中有一个本地资源文件。此文件的目标是让非程序员编辑网页上的文本。问题是资源文件是嵌入式资源,并在ASP.NET MVC Deployment上编译。这意味着他们将有视觉工作室来更改网站副本。这不是最佳的:)
有没有办法在ASP.NET MVC中使用资源文件,这会导致服务器上的.resx文件,以便管理员可以编辑?
另一种选择是把它放在一个数据库中并有一些前端来编辑它,但我真的想避免使用这个选项,因为它对于小网站上的几个文本字段来说过于复杂。
谢谢!
答案 0 :(得分:5)
一旦这样做,就是确保资源不被编译。
添加资源文件(例如TextResource.resx)时,您可以以类型安全的方式访问资源。
例如:
ViewBag.Message = Resources.TextResource.MyMessage;
添加资源文件(* .resx)后,在解决方案资源管理器中选择它并查看其属性。清除“自定义工具”属性。默认情况下,它包含值“GlobalResourceProxyGenerator”。只需删除此值即可。
这有一个缺点,但是您无法再以类型安全的方式访问资源。您必须使用当前HttpContext的GetGlobalResourceObject和GetLocalResourceObject方法加载它们。
例如:
ViewBag.Message = this.HttpContext.GetGlobalResourceObject("TextResource",
"Hello", CultureInfo.CurrentUICulture);
这样您就可以手动更改资源文件(* .resx)。然后,您可以选择构建一个可以读取和修改资源文件内容的应用程序,这些文件只是XML文件。
例如:
http://www.codeproject.com/KB/cs/Editing_a_ResourceFile.aspx