如何从方法返回asp.net视图中的资源

Posted

技术标签:

【中文标题】如何从方法返回asp.net视图中的资源【英文标题】:How to return resource in asp.net view from method 【发布时间】:2018-11-28 13:56:31 【问题描述】:

我有一些 html 代码想用资源中的文本替换。

我的班级看起来像:

 public static class ResourceParser
    
        public static string GetTextFromResource(string keyValue)
        
            ResourceManager rm = new ResourceManager("pl", Assembly.GetExecutingAssembly());

            return rm.GetString(keyValue);
        
    

当我以这种方式从我的视图中访问资源时:

@Resources.pl.accept;

它可以工作并显示我想要的值。

当我这样做时:

@ResourceParser.GetTextFromResource("accept");

有一个例外

MissingManifestResourceException "找不到 任何适合特定文化或中立文化的资源 文化。确保“Servers.Resources.resources”正确无误 在编译时嵌入或链接到程序集“myProject”中,或者 所需的所有附属程序集都是可加载且完全签名的。”

【问题讨论】:

资源文件的名称是什么,文件路径是什么? 看看this link 是否有帮助。还不能作为答案发布,因为那只是猜测 @Andrei 我已更改为嵌入式资源,但仍然出现同样的问题。现在以前工作的部分不起作用:P @Haldo 资源文件名为 pl.resx。资源文件实际上在不同的项目中 项目的命名空间是什么?我认为它应该使用完整的命名空间加载:new ResourceManager('Full.Namespace.WithoutExtension'). 【参考方案1】:

它以某种方式开始工作。

同时我添加了这个方法:

 protected void Application_AcquireRequestState(object sender, EventArgs e)
        
            if (Request.UserLanguages != null)
            
                string culture = Request.UserLanguages[0];

                Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(culture);
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
            
        

到我的 Global.asax.cs 文件

我对代码做了一些改动:

public static string GetTextFromResource(string keyValue)
        
            var path = "ProjectName.Folder.pl";

            var res_manager = new ResourceManager(path, typeof(pl).Assembly);

            return res_manager.GetString(keyValue);
        

【讨论】:

以上是关于如何从方法返回asp.net视图中的资源的主要内容,如果未能解决你的问题,请参考以下文章

如何将消息从我的存储库类返回到我的控制器,然后返回到我在 asp.net-mvc 中的视图?

asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录

从 asp.net API 中的方法返回后,如何保持线程运行?

asp.net mvc,以 JSON 形式返回多个视图

我可以将子动作的返回值传递给 ASP.net 中的视图吗

ASP.NET Core ---- 系列文章