【问题标题】:Html.ActionLink with more than one route value具有多个路由值的 Html.ActionLink
【发布时间】:2016-10-24 10:55:45
【问题描述】:

我对@9​​87654321@method 有疑问。

如果我使用

@Html.ActionLink("Some text", "MyAction", "MyController", new { id = 1234 }, null)

我得到了这个 href 的链接:

http://web.com/MyController/MyAction/1234

这很好,但如果我使用更多的路由值,比如

@Html.ActionLink("Some text", "MyAction", "MyController", new { id = 1234, param1 = 3, param2 = 10 }, null)

我得到了这个 href 的链接:

http://web.com/MyController/MyAction/1234?param1=3&param2=10

但我需要:

http://web.com/MyController/MyAction/1234/3/10

你知道我怎样才能得到它吗?

提供更多信息的版本:

在 MyController 代码文件中,我有:

[Route("MyController/MyAction/{id}")]
public ActionResult MyAction(string id) { /* some code */ }

[Route("MyController/MyAction/{id}/{param1}/{param2}")]
public ActionResult MyAction(string id, byte param1, byte param2) { /* some code */ }

这是我的 RouteCofig.cs 文件:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

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

【问题讨论】:

  • 我在动作public ActionResult MyAction(string id, byte param1, byte param2)中有这个属性[Route("MyController/MyAction/{id}/{param1}/{param2}")],我还以为是一样的呢。
  • 你能告诉我们你的路线配置吗?
  • 使用控制器和路由配置编辑的问题。我错过了什么吗?
  • 请尝试使用我回答中的路线。
  • 是的,它是“MyControllerController"。如果我使用 Alexandru 的答案,它可以工作,但我想了解在 RouteConfig 中添加 MapRoute 或使用 @987654334 之间有什么区别控制器中的@属性。

标签: asp.net asp.net-mvc razor actionlink html.actionlink


【解决方案1】:

这是您的解决方案,

routes.MapRoute(
        name: "MyRoute",                                           // Route name
        url: "{controller}/{action}/{id}/{param1}/{param2}",                          // URL with parameters
        defaults: new { controller = "MyController", action = "MyAction", id = "", param1="", param2="" }  // Parameter defaults
);

【讨论】:

    猜你喜欢
    • 2017-12-03
    • 2018-12-12
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    相关资源
    最近更新 更多