首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC RouteConfig,路由确定控制器

MVC RouteConfig,路由确定控制器
EN

Stack Overflow用户
提问于 2015-04-07 01:30:53
回答 2查看 724关注 0票数 0

我想访问我的主要页面(索引、关于、联系...)仅限{action}{id},但对其他{controller}{action}{id}。例如:

代码语言:javascript
复制
A principal page: myweb.com/index
No principal page: myweb.com/Account/Login

我找过了,但我不知道具体是怎么做的。

这是我的RouteConfig

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

        /*routes.MapRoute(
            "Account",
        "Account/{AccountId}",
        new { action = "Index", controller = "Course" }
        );*/

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

        /*routes.MapRoute(
        "Account",
        "Account/{courseId}",
            //new { action = "Index", controller = "Course" }
        new { controller = "Home", action = "Index" }
        );*/
        //routes.Add()
    }
}
EN

回答 2

Stack Overflow用户

发布于 2015-04-07 03:13:42

请参考示例:

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // Principal pages have unique route per each page.
        // Methods About and Contact should be implemented in HomeController.
        routes.MapRoute(
            name: "About",
            url: "about",
            defaults: new { controller = "Home", action = "About" }
        );

        routes.MapRoute(
            name: "Contact",
            url: "contact",
            defaults: new { controller = "Home", action = "Contact" }
        );

        // other pages use this default route
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
票数 0
EN

Stack Overflow用户

发布于 2015-04-07 03:26:30

如下所示更改您的路由配置,但是您必须将所有主要操作都放在一个控制器中,比如PrincipalController,因为您的路由中不会有控制器。

始终将高优先级路由映射到低优先级路由之前。

代码语言:javascript
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Principal",
            url: "{action}/{id}",
            defaults: new { controller = Princpal", action = "Index", id = UrlParameter.Optional }

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29476274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档