我有VS2010、MVC3和ASP.NET 4.0以及一个简单的测试mvc应用程序。问题是我仍然不断收到错误消息:
当两个路由都没有注释时,执行流程会进入Pizza_2路由并且不会出现问题。但是如果我注释掉Pizza_2,那么它就会进入Pizza_1路由并且在未到达操作方法时出现错误。 该应用程序运行于ASP.NET开发服务器(而非IIS)。 我注意到只有在没有指定完整URL的情况下,它才能使用Pizza_2路由: http://localhost:2893 但是如果输入完整的URL,例如: http://localhost:2893/Pizzas/Pizza 则会再次出现错误。
服务器错误'/'应用程序。
无法找到资源。 描述:HTTP 404。您正在查找的资源(或其某个依赖项)可能已经被移除,名称已更改或暂时不可用。请检查以下URL,并确保拼写正确。
请求的URL:/Pizzas/Pizza
这是我的简单控制器:
public class PizzasController : Controller
{
public ActionResult Pizza()
{
var pizzas = new Pizza();
return View("Pizza", pizza);
}
}
这是我 global.asax 文件的一部分:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{Scripts}/{*pathInfo}");
routes.MapRoute(
"Pizza_1",
"Pizzas/Pizza",
new { controller = "Pizzas", action = "Pizza"}
);
routes.MapRoute(
"Pizzas_2", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Pizzas", action = "Pizza" } // Parameter defaults
);
}
我正在尝试通过以下方式从pizza.cshtml调用此操作:
@Html.ActionLink("Test", "Pizza", "Pizzas");
当两个路由都没有注释时,执行流程会进入Pizza_2路由并且不会出现问题。但是如果我注释掉Pizza_2,那么它就会进入Pizza_1路由并且在未到达操作方法时出现错误。 该应用程序运行于ASP.NET开发服务器(而非IIS)。 我注意到只有在没有指定完整URL的情况下,它才能使用Pizza_2路由: http://localhost:2893 但是如果输入完整的URL,例如: http://localhost:2893/Pizzas/Pizza 则会再次出现错误。