在 .NET Core Razor 页面和 AJAX 中设置部分页面(视图)搜索路径
Posted
技术标签:
【中文标题】在 .NET Core Razor 页面和 AJAX 中设置部分页面(视图)搜索路径【英文标题】:Setting Partial Page (View) search path in .NET Core Razor Pages and AJAX 【发布时间】:2021-11-16 04:50:06 【问题描述】:我在 .NET Core 3.1 应用程序中为我的部分页面(视图)设置“搜索路径”时遇到问题。当我将_SomePartialPagePartial.cshtml
放置在默认搜索路径目录(/Pages/Shared/ 或 /Views/Shared/)中,或与调用 Razor 页面相同的目录中时,AJAX 脚本会调用 public async Task<PartialViewResult> OnPostSomeMethodPartial(string ID, string ID2, ...)
并返回视图return Partial("_SomePartialPagePartial", SomeDataModel)
符合预期。
但是,当我将_SomePartialPagePartial.cshtml
文件放在另一个目录中时,Razor 页面找不到它。
我想将部分页面放在另一个目录中的原因是出于组织目的。我正在使用区域来组织项目,并希望将部分页面保留在某些目录中。比如我的结构是:
Areas
Area1
Models
Pages
Partials
Services
Area2
Models
Pages
Partials
Services
etc.
我想在某些区域(即 Areas/Area2/Partials)中添加一个“Partials”目录,并将相关的部分页面放在那里。当我尝试从 Areas/Area1/Pages 中的 Razor 页面引用 Areas/Area2/Partials 中的部分页面时,复杂性就出现了。在这种情况下,Razor 页面无法找到部分文件。
我已经尝试在 Startup.cs 文件中附加搜索路径(如 https://www.learnrazorpages.com/razor-pages/partial-pages 中所述),但这似乎不起作用?通过services.Configure<RazorViewEngineOptions>(options => ...
添加的options.PageViewLocationFormats
路径不会附加在调试器中验证的路径搜索数组。
也许最好的解决方案是允许直接在调用中设置部分文件的目录(即Partial("<optional path>/_SomePartialPagePartial", SomeDataModel)
或Partial("_SomePartialPagePartial", <optional path>, SomeDataModel)
)。增强功能?
无论如何,任何有关如何解决此问题的帮助/建议将不胜感激... :)
附:我正在使用最新/更新版本的 VS 2019(版本 16.11.3)。
【问题讨论】:
局部视图最好放在一个文件夹中。由于不同区域的页面会调用其他区域的局部视图,所以不需要将局部视图分开到不同的文件夹中。 是的,这就是我一直在做的事情(如上所述)。但是如果可以选择不必将所有部分页面转储到单个目录中,那就太好了。我想我正在寻找一种更好的组织方式...... :) 【参考方案1】:您可以尝试使用下面的代码。
public IActionResult OnPostSomeMethodPartial(string ID, string ID2, ...)
// var model = new yourModelClass();
// if you want use model, you can use like below
// return PartialView("~/Areas/Area1/Partials/testPartialsPage.cshtml",model);
return PartialView("~/Areas/Area1/Partials/_SomePartialPagePartial.cshtml");
更多详情,您可以参考下面的帖子。
Application can't find view when using areas
【讨论】:
@Peter 效果很好。有趣的是,我使用上面建议的显式路径进行了测试,但只是忘记添加 .cshtml 扩展名,这显然不起作用。仍然......如果在 Startup.cs 中附加搜索路径的推荐解决方案能够工作,那就太好了(所以如果我将视图移动到另一个区域,我就不必跟踪它并更改每个引用) ,但我想这是一个很好的权衡。谢... :) @MicJarek 如果您认为我的解决方案对您有用,请接受作为答案,tks。 对接受部分表示感谢和抱歉......我仍然是 *** 的新手,但正在学习...... :) @MicJarek np,欢迎^_^以上是关于在 .NET Core Razor 页面和 AJAX 中设置部分页面(视图)搜索路径的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 asp.net core razor 页面中的 razor 视图
在 .NET Core Razor 页面和 AJAX 中设置部分页面(视图)搜索路径
Asp .Net Core 3.1 Razor 页面:复杂模型绑定