2015-05-12 191 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

谢谢。这是一个正确的解决方案。 –