1

我正在使用ASP.NET MVC 4 并试图编写一个非常基本的路线,但它不起作用并且对此感到非常沮丧!

我希望 URL http://www.mywebsite.com/my-page触发名为Page的控制器和操作方法Index

除此之外,我没有其他路线设置:

RouteTable.Routes.MapRoute(
    name: "Default",
    url: "my-page",
    defaults: new { controller = "Page", action = "Index" }
);

我的设置是否有问题或者我哪里出错了?

我得到的错误是:

找不到路径“/my-page”的控制器或未实现 IController。

4

1 回答 1

0

主要问题是您试图覆盖默认路由。在 MVC4 中,路由在 App_Start/RouteConfig.cs 中定义。“默认”路由应该是 LAST 路由:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

然后,对于您的特定路线,在默认路线之前使用以下内容:

        routes.MapRoute(
            name: "MyPage",
            url: "my-page",
            defaults: new { controller = "Page", action = "Index" }
        );

最后,确保您有一个控制器 PageController.cs,其中包含一个操作 Index 和一个 View Views/Page/Index.cshtml:

public class PageController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
于 2013-01-23T02:32:40.993 回答