ASP.NET MVC - 非嵌入式资源文件

时间:2011-08-11 15:23:43

标签: asp.net asp.net-mvc resources

我目前在ASP.NET MVC项目中有一个本地资源文件。此文件的目标是让非程序员编辑网页上的文本。问题是资源文件是嵌入式资源,并在ASP.NET MVC Deployment上编译。这意味着他们将有视觉工作室来更改网站副本。这不是最佳的:)

有没有办法在ASP.NET MVC中使用资源文件,这会导致服务器上的.resx文件,以便管理员可以编辑?

另一种选择是把它放在一个数据库中并有一些前端来编辑它,但我真的想避免使用这个选项,因为它对于小网站上的几个文本字段来说过于复杂。

谢谢!

1 个答案:

答案 0 :(得分:5)

一旦这样做,就是确保资源不被编译。

添加资源文件(例如TextResource.resx)时,您可以以类型安全的方式访问资源。

例如:

ViewBag.Message = Resources.TextResource.MyMessage;

添加资源文件(* .resx)后,在解决方案资源管理器中选择它并查看其属性。清除“自定义工具”属性。默认情况下,它包含值“GlobalResourceProxyGenerator”。只需删除此值即可。

这有一个缺点,但是您无法再以类型安全的方式访问资源。您必须使用当前HttpContext的GetGlobalResourceObjectGetLocalResourceObject方法加载它们。

例如:

ViewBag.Message = this.HttpContext.GetGlobalResourceObject("TextResource", 
                  "Hello", CultureInfo.CurrentUICulture);

这样您就可以手动更改资源文件(* .resx)。然后,您可以选择构建一个可以读取和修改资源文件内容的应用程序,这些文件只是XML文件。

例如:

http://www.codeproject.com/KB/cs/Editing_a_ResourceFile.aspx