Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET core razor页面在pagemodel内部的inputmodel本地化_Razor_Asp.net Core_Localization - Fatal编程技术网

ASP.NET core razor页面在pagemodel内部的inputmodel本地化

ASP.NET core razor页面在pagemodel内部的inputmodel本地化,razor,asp.net-core,localization,Razor,Asp.net Core,Localization,我在ASP.NET核心解决方案中创建了一个Resources文件夹,并创建了用于翻译的resx文件。我有模型、页面和控制器的resx文件。我想知道当pagemodel中有inputmodel时,在Resources文件夹中放置resx文件的位置 假设我们在pages文件夹下有一个razor页面,如下所示: Pages/MyPage.cshtml 及其模型页面: Pages/MyPage.cshtml.cs 您的资源文件夹位于“页面”文件夹旁边的项目根目录中,如下所示: 项目根 --页数 --资源

我在ASP.NET核心解决方案中创建了一个
Resources
文件夹,并创建了用于翻译的resx文件。我有模型、页面和控制器的resx文件。我想知道当pagemodel中有inputmodel时,在
Resource
s文件夹中放置resx文件的位置

假设我们在pages文件夹下有一个razor页面,如下所示:

Pages/MyPage.cshtml

及其模型页面:

Pages/MyPage.cshtml.cs

您的资源文件夹位于“页面”文件夹旁边的项目根目录中,如下所示:

项目根

--页数

--资源

默认情况下,MyPages输入模型为:

MyPageModel

根据startup.cs文件中的视图本地化设置对资源文件进行命名

虚线命名:

如果使用带有“后缀”选项的每视图资源文件:

然后,您必须遵循资源文件的虚线命名:

Resources/Pages.MyPage.en-US.resx//用于查看的本地化资源

Resources/Pages.MyPageModel.en-US.resx//输入模型的本地化资源

子文件夹命名

如果使用带有“子文件夹”选项的逐视图资源文件:

然后,您必须为资源文件创建类似于视图文件夹结构的文件夹结构:

Resources/Pages/MyPage.en-US.resx//用于查看的本地化资源

Resources/Pages/MyPageModel.en-US.resx//输入模型的本地化资源


还有另一种选择,即使用共享资源文件,而不是为每种语言的每个视图创建一个资源,您可以为每种语言的所有视图只创建一个资源文件,如果您对使用共享资源感兴趣,您可以访问此博客页面:

这是一个老问题,现在可能不相关,但我也遇到了同样的问题,并且能够解决它,所以我将补充对我有用的东西

这其实只是一个小细节。如果我们想要页面模型的资源,我们将拥有
Resources\Pages\IndexModel.en.resx
,对于该页面模型内部的类,我们添加一个
+InnerModel
,最后是
Resources\Pages\IndexModel+InnerModel.en.resx


我在这里创建了一个GitHub存储库,其中包含一个工作示例->

谢谢你的描述性回答,但它没有回答问题。好吧,我想我误解了这个问题,就我现在所知,你不想使用共享资源文件,对吧?是的,我想知道,是否有可能对内部类使用DataAnnotation本地化。像PageModel>InputModelPath一样,对于点命名和子文件夹命名,resx文件的路径是相同的,这是否正确?我希望子文件夹命名的路径是Resources/Pages/en-US/MyPage。resx@GuidoNeele是的,唯一的区别是使用点(.)或斜杠(/),其余的都一样。有关更多详细信息,请参见+符号,它不仅愚蠢,而且有效。谢谢
services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix);
services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .AddViewLocalization(LanguageViewLocationExpanderFormat.SubFolder);