本文共 1198 字,大约阅读时间需要 3 分钟。
我用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!");
}
}
到现在为止还挺好.我运行应用程序,它告诉我一切正常!
现在,我从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,也没有请求.为什么路由甚至需要参与?
转载地址:http://urjdv.baihongyu.com/