.NET资源文件仅在与MVC视图位于同一文件夹时成功引用

时间:2011-11-10 10:15:35

标签: c# asp.net-mvc resx

我有一个MVC3 Web应用程序,我正在使用.resx资源文件来查看我的所有视图内容。我将resx文件保存在与使用它们的视图相同的位置,但是,如果我将资源文件移动到同一项目中的另一个文件夹 ,我会收到此错误:

  

无法找到适合指定文化的任何资源或   中性文化。确保   “Application.Web.Views.Login.LoginStrings.resources”是正确的   在编译时嵌入或链接到程序集“Application.Web”,或   所需的所有卫星组件都是可装载和完全的   签名。

资源的自定义工具属性设置为PublicResXFileCodeGenerator,构建操作设置为Embedded Resource,所以我不确定它是什么。这是我第一次使用resx文件,所以任何帮助都会受到赞赏。

这是我如何使用资源类的示例:

<ul class="itemised-list">
        <li class="italic">
            @LoginStrings.Info_Login
        </li>
        <li>
            <label>@SharedStrings.Account_Username</label>
            @Html.TextBoxFor(m => m.Username)
            @Html.ValidationMessageFor(m => m.Username)
        </li>
        <li>
            <label>@SharedStrings.Account_Password</label>
            @Html.PasswordFor(m => m.Password)
            @Html.ValidationMessageFor(m => m.Password)
        </li>
        <li>
            <input type="submit" value="@LoginStrings.Btn_Login" class="button" />
        </li>
</ul>

正如你所看到的那样,非常标准,而且一直都在努力。然后我将resx文件移动到项目中的其他位置并 bam 运行时错误:(

1 个答案:

答案 0 :(得分:0)

代码示例有助于理解您要实现的目标。

一种方法是使用强类型的资源。在这种情况下,您必须将资源文件的访问修饰符更改为内部(在VS中打开.resx文件时在工具栏中)?

enter image description here

如果将其设置为internal(如果它位于不同的程序集中,则为public),将生成.resx文件的代码文件,您应该能够访问强类型的资源。

这样您可以通过以下方式访问资源:

ResourceFile.ResourceItem