【问题标题】:.NET resource file only successfully reference when in same folder as MVC views.NET 资源文件仅在与 MVC 视图位于同一文件夹时成功引用
【发布时间】:2011-11-10 10:15:35
【问题描述】:

我有一个 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 运行时错误:(

【问题讨论】:

    标签: c# asp.net-mvc resx


    【解决方案1】:

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

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

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

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

    ResourceFile.ResourceItem
    

    【讨论】:

    • 我的默认资源文件的访问修饰符设置为公共,并且没有为任何区域资源文件生成代码,所以不可能是这样,谢谢
    • 正如我上面提到的,代码示例将有助于理解您遇到这些问题的原因。您目前如何访问资源?
    • 实际上没有任何代码可以显示,我只是按照您上面显示的方式进行操作,在视图中我只是引用资源类,问题是当资源时它可以正常工作文件位于 Views 文件夹中,但如果我将它们移动到其他任何地方,它会失败并显示上述消息。真的很奇怪,一定是和资源文件的复制有关什么的
    猜你喜欢
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2019-02-10
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多