请记住我是asp.net mvc的新手,所以我知道也许我的问题很容易解决。 :)
我开始了一个基于MVC模式的新ASP.NET项目,我得到了整个HomeController和工作网站。所以我添加了一个新的Controller( CoursesController )和一个新路由。但它不起作用。
展示一些工作。
CoursesController.cs - 部分内容
public class CoursesController : Controller
{
private readonly CourseStore _store = new CourseStore();
//
// GET: /Course/
public ActionResult Index()
{
return View(_store.GetCourses());
}
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Courses",
url: "Courses/{action}/{courseid}",
defaults: new { controller = "Courses", action = "Index", courseid = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
_ Layout.cshtml - 相关链接部分
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
<li>@Html.ActionLink("Courses", "Index", "Courses")</li>
</ul>
结果
如果我点击_layout中的链接,我会发送到网址http://localhost/Courses/
并收到回复您无权查看此目录或网页。。
但如果我手动将网址更改为http://localhost/Courses/Index
,一切正常。
请记住,ActionLink仅生成http://localhost/Courses/
非常感谢任何帮助。
答案 0 :(得分:0)
以下是用户WeTTTT粘贴的正确答案。
我相信你的网站根目录下有一个“课程”文件夹,这会导致网址根本没有点击mvc路由。解决此问题的一种快速方法是添加routes.RouteExistingFiles = true;,但这不是建议的,可能会导致其他问题。您是否希望/允许将“课程”文件夹名称更改为绕过路由的其他内容? - WeTTTT 3月21日12:11