首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用IRouteProvider和RouteAttribute调用果园控制器

不使用IRouteProvider和RouteAttribute调用果园控制器
EN

Stack Overflow用户
提问于 2015-03-27 08:48:51
回答 1查看 379关注 0票数 2

我使用IRouterProvider根据this thread中的建议从属性路由创建路由描述。将调用路由器提供程序并获取路由。

我通过使用Url.Action助手方法为这些特定的操作生成链接,并且为定制路由生成urls,就像预期的那样。然而,当这样的链接被导航时,控制器不会被调用。我得到了404。果园甚至不在游戏中。

我的路由提供者看起来是:

代码语言:javascript
复制
public IEnumerable<RouteDescriptor> GetRoutes()
{
    var type = typeof(ShoppingCartController);

    foreach (var meth in type.GetMethods())
    {
        var attr = meth.GetCustomAttribute<System.Web.Mvc.RouteAttribute>();

        if (attr != null)
        {
            yield return new RouteDescriptor
            {
                Priority = 100,
                Name = string.Format("ShoppingCart{0}Route", meth.Name),
                SessionState = System.Web.SessionState.SessionStateBehavior.Required,
                Route = new Route(attr.Template,
                    new RouteValueDictionary 
                    {
                        { "area", "XXXX.Features" },
                        { "controller", "ShoppingCart" },
                        { "action", meth.Name }
                    },
                    new RouteValueDictionary(),
                    new RouteValueDictionary 
                    {
                        { "area", "XXXX.Features" }
                    },
                    new MvcRouteHandler())
            };
        }
    }
}

我的控制器方法签名是:

代码语言:javascript
复制
[Themed]
[Route("cart/checkout")]
public ActionResult CheckOut() {...}

我试着调试这个问题,但我甚至不知道从哪里开始。我对果园很陌生。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 12:25:03

路由提供程序中的代码似乎没有问题。有几件事你可以检查:

  • 在不使用RouteAttribute的情况下对同一条路径进行硬编码,并查看这条路径是否通过。如果是这样的话,那么属性本身就会因为某种原因而造成混乱,最好的选择是模仿属性类,并使用这个类来修饰操作。
  • 如果上面的方法不起作用,那么问题就在路线本身之内。在这种情况下:
    • 确保area参数是正确的,并且等于控制器所在的模块(而不是功能)名称(即。模块项目名称)。
    • 对控制器和操作名执行相同的操作。
    • 将路由优先级设置为int.MaxValue,以确保它不会被其他路由劫持
    • 不要使用Name属性和/或确保它确实是唯一的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29296528

复制
相关文章

相似问题

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