2017-07-25 300 views
2

當試圖創建返回視圖的通用.NET Core MVC控制器時,找不到視圖(錯誤消息:「無法解析查看詳細信息」)。發生這種情況的原因是,通用控制器不與特定視圖綁定。應該根據T是什麼來挑選視圖。我在ASP.NET中看到了一些這樣的例子,但我無法在.NET Core中重新創建這些例子。.NET Core MVC通用控制器視圖

有沒有一種很好的方法可以在.NET Core中解決這個問題?

通用控制器,例如:

public class ControllerBase<T> : Controller where T : class 
{ 
    private IManager<T> _manager; 

    public ControllerBase(IManager<T> manager) 
    { 
     _manager = manager; 
    } 

    public async Task<IActionResult> Details(int? id) 
    { 
     if (id == null) 
     { 
      return NotFound(); 
     } 

     var result = await _manager.Get(id); 
     return View(result); 
    } 
} 
+1

您的意見是否存在並放置在正確的位置? [視圖文檔](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview) – Rostech

+0

是的,但問題是,沒有視圖的通用控制器,因爲它應該根據T是什麼來選擇視圖。 我只是不知道如何實現。 –

+0

是的,我從你的編輯中瞭解到真正的問題。 – Rostech

回答

0

在評論中已經提到你可以可以指定視圖通過

return View("viewName", result); 

其中viewName應適應您的要求使用(你的問題建議,也許類型參數的類型名稱?

ViewEngine根據放置的位置查找視圖可能存在問題他們以及您的控制器如何安排。

return View("~/Views/path/to/your/generic/viewName.cshtml", result); 

或延長在視圖引擎搜索路徑這裏提到:但是你可以通過指定的完整路徑視圖解決這個 Can I specify a custom location to "search for views" in ASP.NET MVC?

0

原代碼實際工作按計劃,該對我來說,問題與ReSharper報告了一個實際上沒有任何問題的問題。我錯過了它。

感謝大家的幫助。