我在Pluralsight示例中有关于MVC3
的问题。我是MVC的新手,我有一个看似简单的问题。我下载了示例代码并将Routemap
添加到global.asax.cs
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace OdeToFood
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Cuisine",
"cuisine/{name}",
new { controller = "cuisine", action = "Search" }
);
/* routes.MapRoute(
"Cuisine",
"{controller}/{name}",
new { controller = "cuisine", action = "Search" }
); */
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
并添加了控制器:
namespace OdeToFood.Controllers
{
public class CuisineController : Controller
{
//
// GET: /Cuisine/
public ActionResult Search()
{
return Content("You have reached the Cuisine controller");
}
}
}
如教程"Controller Action Parameter!"
所示,运行应用程序并使用单词cuisine(所有拼写正确 - 甚至更改为全部大写作为测试),我仍然得到HTTP 404 "not found error"
。
我正在使用Windows 7
和VS 2012
在.net 4.5 installed
上运行(这是一个新的框,可能没有以前的版本。MVC 3
和{{1}在新的项目选择中,所以那些必须是isntalled correclty。
关于我做错的任何想法?我错过了一步吗?我看到MVC 4
或IIS6
可能/必须在机器上?我开始相信IIS不会在Windows 7上运行。这是真的吗?我需要iis吗?示例代码正常工作,直到此更改...
当我学习这些新东西时,我有点过头了。感谢您的耐心和帮助!
答案 0 :(得分:2)
尝试使用:
routes.MapRoute(
"Cuisine",
"cuisine/{name}",
new { controller = "cuisine", action = "Search", name = "" }
);
答案 1 :(得分:1)
尝试使用MVC路由调试器,以便可以直观地看到匹配的路由。我使用的是Phil Haack,但也有其他人可用:
Install-Package RouteDebugger
另外,您是否需要在搜索操作中使用 name 参数来匹配此路线?