我是新來的MVC,我試圖通過創建一個練習網站,這將是一個圖庫網站,查看和上傳圖像。我遇到的問題是我無法使路由正常工作。MVC 4路由到控制器
以下是我的路由代碼和解決方案樹的鏈接: https://imgur.com/a/Oc1Tt?
我是否錯誤地設置了視圖和控制器?
我得到的錯誤是:未找到'索引'或其主人的視圖或沒有視圖引擎支持搜索的位置。以下位置進行檢索:
感謝任何輸入
我是新來的MVC,我試圖通過創建一個練習網站,這將是一個圖庫網站,查看和上傳圖像。我遇到的問題是我無法使路由正常工作。MVC 4路由到控制器
以下是我的路由代碼和解決方案樹的鏈接: https://imgur.com/a/Oc1Tt?
我是否錯誤地設置了視圖和控制器?
我得到的錯誤是:未找到'索引'或其主人的視圖或沒有視圖引擎支持搜索的位置。以下位置進行檢索:
感謝任何輸入
路由功能可將傳入請求轉換爲路由值或通過使用路線值以產生一個URL。路由值可以作爲URL本身中的參數設置爲默認值,或者兩者都設置(默認值使URL參數可選)。
您尚未在路線中設置任何路線值。由於您在URL中沒有路由參數,因此您需要設置默認值(MVC需要控制器和操作)。
routes.MapRoute(
name: "Gallery",
url: "Gallery/Index",
defaults: new { controller = "Gallery", action = "Index" }
);
也就是說,您的Default
路由已經覆蓋此URL。如果您希望Default
路線未涵蓋的行爲,則只需添加自定義路線。另外,如果您更改視圖名稱以使其與操作方法的名稱不匹配,則必須從操作方法明確指定名稱。
public ActionResult Index()
{
return View("~/Views/Gallery/GalleryView.cshtml");
}
默認情況下,MVC使用約定。只需將視圖Index.cshtml
而不是GalleryView.cshtml
命名爲視圖就簡單多了,因此您可以僅從操作方法返回View
。
public ActionResult Index()
{
return View();
}
將HomeView.cshtml重命名爲Index.cshtml – Jaybird
代碼必須在問題中 - 而不是鏈接到它的圖像。 –
1)最好給動作方法和相應的視圖命名。所以你只需要'返回View()'。 2)在每個控制器和視圖中都有一個默認的'Index'操作也很有用。 3)不需要將'View'附加到'cshtml'文件。 4)閱讀更多關於MVC約定。 – adiga