【发布时间】:2012-01-20 01:32:59
【问题描述】:
我创建了一个带有 2 个控制器 HomeController 和 OtherController 的空 ASP.NET MVC 3 应用程序。
HomeController.cs 如下所示:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Index.cshtml 如下所示:
@Html.Action("Index", "Other")
当然还有 Othercontroller.cs:
public class OtherController : Controller
{
[ChildActionOnly]
public ActionResult Index()
{
return Content("OK!");
}
}
到目前为止,一切都很好。我运行应用程序,它告诉我一切都是OK!
现在,我从 Global.asax.cs 中获取默认的 RegisterRoutes:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
然后我把它揉成一团,所以没有路线匹配OtherController:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default", "", new { controller = "Home", action = "Index" });
}
现在,当我运行该页面时,它会崩溃并显示以下错误消息:
System.InvalidOperationException: No route in the route table matches the supplied values.
Source Error:
Line 1: @Html.Action("Index", "Other")
我在对.Action 的调用中指定了控制器名称和操作名称。没有生成任何 URL,也没有发出请求。 为什么路由还需要参与?
【问题讨论】:
标签: asp.net-mvc routes