簡體   English   中英

如何讓 Asp.Net Core 返回正確的視圖

[英]How to get Asp.Net Core to return the correct view

我的Asp.Net Core項目安排如下:

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}");
});

Folder1Controller的代碼如下所示:

public IActionResult Index()
{            
    return View();
}

它工作正常。 但是, Folder2Controller的代碼看起來完全一樣。 問題是當它執行Folder2Index()方法時,它首先在Folder1中查找。 我可以通過這樣做來解決它:

public IActionResult Index(string id)
{
    return View("/Folder2/Index.cshtml");
}

我的問題是,有沒有辦法讓 Asp.Net Core 先查看當前目錄? 即使我使用相對路徑 ( "./Index" ),它仍然首先轉到Folder1

您可以將名稱為 controller 的文件夾添加到您的文件夾 1、文件夾 2,以便路由可以識別要查找的視圖。

首先,像這樣更改文件夾結構:

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}");
                });

結果: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM