2015-05-12 230 views
1

我工作的一個MVC項目,每次我試着點擊「關於」或「聯繫」我得到的時間:MVC - 資源無法找到

說明:HTTP 404 。您正在查找的資源(或其中一個資源依賴項)可能已被刪除,該名稱可能有 已更改,或暫時不可用。檢查下面的URL 的拼寫是否正確。

請求的URL:/Views/Home/Contact.cshtml

我能夠去起始頁(指數),但一旦我嘗試重定向到anoter頁面,如「約」或「聯繫」我如上所述,獲取錯誤消息。

這裏是我的代碼:

<ul id="nav"> 
      <li><a href="~/Views/Home/Index.cshtml">Home</a></li> 
      <li><a href="~/Views/Home/About.cshtml">About</a></li> 
      <li><a href="~/Views/Home/Contact.cshtml">Contact</a></li> 
     </ul> 

我的HomeController:

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

     public ActionResult About() 
     { 
      ViewBag.Message = "Your application description page."; 

      return View(); 
     } 

     public ActionResult Contact() 
     { 
      ViewBag.Message = "Your contact page."; 

      return View(); 
     } 

The File directory structure

+0

刪除.cshtml –

+0

@JessicaPartridge試了一下,沒有工作。我得到了同樣的錯誤信息。 –

+1

也應該刪除「意見」,因爲這是隱藏的 –

回答

3

你不應該鏈接到cshtml文件。這些文件是由視圖引擎渲染的。我相信你應該鏈接到你的控制器的行動,返回你的意見。

<ul id="nav"> 
    <li>@Html.ActionLink("Home", "Index", "Home")</li> 
    <li>@Html.ActionLink("About", "About", "Home")</li> 
    <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
</ul> 
+1

這絕對是更好的方法 –

+1

正確的方式來做到這一點,但一個小小的錯誤 - 他們希望第一個鏈接的鏈接文本是首頁非索引。 –

+0

哦,我明白了。這就像你提到的默認,但我改變了它。我想我會改回它。非常感謝您的幫助。 :) –

1

從鏈接中刪除.cshtml和/查看/:

<ul id="nav"> 
    <li><a href="~/Home/Index">Home</a></li> 
    <li><a href="~/Home/About">About</a></li> 
    <li><a href="~/Home/Contact">Contact</a></li> 
</ul> 

在MVC中,您的網址指向動作而不是網頁

+0

謝謝。這是一個正確的解決方案。 –

1

您必須一直使用網頁表單(.aspx)頁面。 MVC不以這種方式工作。 在代碼中,您已經在HomeController中指定了3個操作。默認MVC路由是/{controller}/{Action}/{other param}所以你的代碼會變得

<ul id="nav"> 
     <li><a href="/Home/Index">Home</a></li> 
     <li><a href="/Home/About">About</a></li> 
     <li><a href="/Home/Contact">Contact</a></li> 
    </ul> 
+0

謝謝。這是一個正確的解決方案。 –