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

4
我目前在ASP.NET MVC项目中有一个本地资源文件。该文件的目的是让非程序员编辑网页上的文本。问题是资源文件是嵌入式资源并在ASP.NET MVC发布时编译的。这意味着他们需要使用Visual Studio来更改网站副本。这是不太理想的解决方案 :)
有没有办法在ASP.NET MVC中利用资源文件,使管理员可以在服务器上编辑.resx文件?
另一种选择是将其放在数据库中,并有一些前端来编辑它,但我真的很想避免这个选项,因为对于小型站点上的几个文本字段来说过于复杂。
谢谢!

它一定要是嵌入式资源吗? - Josh Anderson
如果我将其作为嵌入式资源删除,使用该资源的页面将失败。我不太理解资源,所以不确定如何以非嵌入式方式使其工作--因此提出这个问题。 - anonymous
1个回答

5

一种做法是确保资源未编译。

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

例如:

ViewBag.Message = Resources.TextResource.MyMessage;

在添加资源文件(*.resx)后,选择它并查看属性。清除“Custom Tool”属性,它默认包含值“GlobalResourceProxyGenerator”,只需删除此值即可。这样做的缺点是,你将无法以类型安全的方式访问资源。您将不得不使用当前HttpContext的GetGlobalResourceObjectGetLocalResourceObject方法来加载它们。
例如:
ViewBag.Message = this.HttpContext.GetGlobalResourceObject("TextResource", 
                  "Hello", CultureInfo.CurrentUICulture);

通过这种方式,您可以手动更改资源文件(*.resx)。然后,您可以选择构建一个应用程序,该应用程序可以读取和修改资源文件的内容,这些文件只是XML文件。
例如:

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


我投了反对票,因为这不是原问题的解决方案,而是一种可能需要更改整个应用程序的替代方式。 - Aridane Álamo
@AridaneÁlamo:我不同意你的负评。这个答案正是提问者所要求的。能够编辑部署在服务器上的*.resx文件,唯一的方法就是确保它们没有被编译。失去类型安全与此相伴而来。并不像有什么绕过它的方法。在问题的评论中,提问者明确表示他不知道如何以非嵌入方式使用它们,这就是我解释的内容。 - Christophe Geers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接