C# 如何让Asp.NETCore返回正确的视图
我的Asp.Net核心项目安排如下:C# 如何让Asp.NETCore返回正确的视图,c#,asp.net-core,routes,C#,Asp.net Core,Routes,我的Asp.Net核心项目安排如下: MyApp --Folder1 Folder1Controller.cs Index.cshtml --Folder2 Folder2Controller.cs Index.cshtml --Views Shared etc.. 我已经更改了启动程序,以便它知道以下目录结构: services.Configure<RazorViewEngineOptions>(options => { options.Vi
MyApp
--Folder1
Folder1Controller.cs
Index.cshtml
--Folder2
Folder2Controller.cs
Index.cshtml
--Views
Shared
etc..
我已经更改了启动程序,以便它知道以下目录结构:
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationFormats.Clear();
options.ViewLocationFormats.Add($"/Folder1/{{0}}{RazorViewEngine.ViewExtension}");
options.ViewLocationFormats.Add($"/Folder2/{{0}}{RazorViewEngine.ViewExtension}");
options.ViewLocationFormats.Add($"/Views/Shared/{{0}}{RazorViewEngine.ViewExtension}");
});
而且效果很好。但是,Folder2Controller
的代码看起来完全相同。问题在于,当它为Folder2
执行Index()
方法时,它首先查找Folder1
。我可以通过这样做来绕过它:
public IActionResult Index(string id)
{
return View("/Folder2/Index.cshtml");
}
我的问题是,有没有办法让Asp.NETCore先查看当前目录?即使我使用相对路径(
“/Index”
),它仍然会首先转到Folder1
。您可以在Folder1、folder2中添加一个名为controller name的文件夹,以便路由能够识别要查找的视图
首先,更改文件夹结构,如下所示:
public IActionResult Index()
{
return View();
}
MyApp
--Folder1
Folder1Controller.cs
--Folder1
Index.cshtml
--Folder2
Folder2Controller.cs
--Folder2
Index.cshtml
--Views
Shared
etc..
启动:
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationFormats.Clear();
options.ViewLocationFormats.Add("/Folder1/{1}/{0}" + RazorViewEngine.ViewExtension);
options.ViewLocationFormats.Add("/Folder2/{1}/{0}" + RazorViewEngine.ViewExtension);
options.ViewLocationFormats.Add($"/Views/Shared/{{0}}{RazorViewEngine.ViewExtension}");
});
services.Configure(选项=>
{
options.ViewLocationFormats.Clear();
options.ViewLocationFormats.Add(“/Folder1/{1}/{0}”+RazorViewEngine.ViewExtension);
options.ViewLocationFormats.Add(“/Folder2/{1}/{0}”+RazorViewEngine.ViewExtension);
options.ViewLocationFormats.Add($“/Views/Shared/{{0}}{RazorViewEngine.ViewExtension}”);
});
结果:
控制器的源位置未映射到uri路径。最近的特征可能是区域的。