【问题标题】:MVC Routing with no (or a default) action name没有(或默认)操作名称的 MVC 路由
【发布时间】:2020-03-27 07:15:41
【问题描述】:

使用 MVC 5,我试图让一些友好的控制器/动作名称通过路由工作。用这个把我的头撞到墙上。

给定这个控制器:

MyController
    Index(startPage, pageSize)
    EditAction(itemId)

我正在使用两个路由(在继承的 AreaRegistration 类下定义)

context.MapRoute(
            "MyControllerRoute",
            "myArea/MyController/{action}/{itemId}",
            new
            {
                controller = "MyController",
                action = "Index",
                itemId = UrlParameter.Optional
            },
            new[] {"MySite.Areas.MyArea.Controllers"});

context.MapRoute(
            "MyControllerRoutePaged",
            "myArea/MyController/{action}/{startPage}/{pageSize}",
            new
            {
                controller = "MyController",
                action = "Index",
                pageSize = UrlParameter.Optional,
                startPage = UrlParameter.Optional
            },
              new[] {"MySite.Areas.MyArea.Controllers"});

我想实现这些链接:

mysite.com/MyArea/MyController/startPage/pageSize
mysite.com/MyArea/MyController/EditAction/itemId

mysite.com/MyArea/MyController2/ (this being the Index action for a given controller)
mysite.com/MyArea/MyController3/ (this being the Index action for another controller)


mysite.com/MyArea/MyController/ (mysite.com/MyArea/MyController/0/20 would also work if paging existis on the controller)
mysite.com/MyArea/MyController/5/20
mysite.com/MyArea/MyController/EditAction/5

分页链接显示在默认索引页面上。不在任何“操作页面”上。特别是我希望隐藏索引操作名称,所以我最终不会得到如下链接:

mysite.com/MyArea/MyController/MyController/.../

如果我将 {action} 占位符放在路由中,我可以实现这一点,但路由最终会发生冲突。我曾尝试使用 ActionLink 和 RouteLink(定义路线名称),但总是有一条路线首先匹配并中断下一条路线。如果我更改路线的顺序,这仍然会发生,但反过来。

我正在使用路由调试器,我可以看到哪里出了问题,但我一直在绕圈子试图让它工作。

有什么想法吗?谢谢。

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-5


    【解决方案1】:

    我认为你应该使用Attribute Routing 来自定义路由。

    【讨论】:

    • 谢谢。这有帮助,现在我只是在加载“MyArea”的默认控制器和操作时遇到问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多