【问题标题】:How to Redirect to specific action route如何重定向到特定的动作路线
【发布时间】:2017-11-03 06:26:42
【问题描述】:

这是我的自定义路线。但是当我想使用 RedirectToAction("action","controller"); 时,它会导致错误。 路由表中没有路由与提供的值匹配。 我访问了一些相关的帖子,但我无法解决它。我该如何解决?

routes.MapMvcAttributeRoutes();
routes.LowercaseUrls = true;
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}/{filter1}/{filter2}/{filter3}/{filter4}/{filter5}/{filter6}/{filter7}/{filter8}/{filter9}/",
    defaults: new
    {
        controller = "Shop",
        action = "Category",
        id = UrlParameter.Optional,
        filter1 = UrlParameter.Optional,
        filter2 = UrlParameter.Optional,
        filter3 = UrlParameter.Optional,
        filter4 = UrlParameter.Optional,
        filter5 = UrlParameter.Optional,
        filter6 = UrlParameter.Optional,
        filter7 = UrlParameter.Optional,
        filter8 = UrlParameter.Optional,
        filter9 = UrlParameter.Optional,
    }
);

【问题讨论】:

  • 试试RedirectToAction("action", "controller", new { id = 0 })怎么样?我认为RedirectToAction 中定义的操作没有路由匹配,如果您想使用多个过滤器(或动态过滤器),您应该创建另一个映射。
  • @TetsuyaYamamoto tnx。它没有用。如何创建另一个映射过滤器。
  • 该路由是否映射RouteConfig 中唯一的一条路由?如果我的猜测是正确的,那么您应该考虑将路由划分为具有不同过滤器的多个映射,而不是为多个过滤器使用单个默认路由。
  • 不相关,但只有最后一个参数可以标记为UrlParameter.Optional
  • 由于this,您正在尝试的操作将无法正常工作。

标签: c# razor asp.net-mvc-5


【解决方案1】:

我曾经在RedirectToAction 上遇到过类似的问题,发现您需要注册一个有效的路由来执行该操作。在您的情况下,发生错误是因为您的可选参数超过了预期的数量。

我测试了代码,它可以工作:

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

如果您想要自己的路线,您可以在您的 Action 顶部使用 [Route("")],在 RouteConfig.cs 中的第一个 Add routes.MapMvcAttributeRoutes(); to RegisterRoutes 方法中。之后执行以下操作:

[Route("{TestEmployee}/{Index}/{id?}/{filter1?}/{filter2?}/{filter3?}/{filter4?}/{filter5?}/{filter6?}/{filter7?}/{filter8?}/{filter9?}")]
public ActionResult Index()
{
    //do something 
}

那你可以redirectToAction:

return RedirectToAction("Index", "TestEmployee" ,routeValues: null);

【讨论】:

  • routeValues不为null的情况怎么样!?我使用了像“1/3/def”这样的字符串(我的参数),但它不起作用。
  • @mjyazdani 你在 RouteConfig.cs 中映射了正确的 MapRoute 吗?!
猜你喜欢
  • 1970-01-01
  • 2018-05-25
  • 2023-03-10
  • 2021-09-28
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 2016-03-30
相关资源
最近更新 更多