2011-08-11 91 views
4

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

有没有一种方法可以使用ASP.NET MVC中的资源文件,这会导致服务器上的.resx文件让管理员类型的人员能够编辑?

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

谢谢!

+0

难道一定是嵌入式的资源? –

+0

如果我将其作为嵌入式资源删除,则使用资源的页面将失败。我不是很了解资源,所以我不确定如何使它以非嵌入的方式工作 - 因此是这个问题。 – anonymous

回答

6

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

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

例如:

ViewBag.Message = Resources.TextResource.MyMessage; 

后添加一个资源文件(*的.resx),在Solution Explorer中选中它并查看其属性。清除“自定义工具”属性。默认情况下,它包含值“GlobalResourceProxyGenerator”。只要删除这个值。

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

例如:

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

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

例如:

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