Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 具有多个路由值的Html.ActionLink_Asp.net_Asp.net Mvc_Razor_Actionlink_Html.actionlink - Fatal编程技术网

Asp.net 具有多个路由值的Html.ActionLink

Asp.net 具有多个路由值的Html.ActionLink,asp.net,asp.net-mvc,razor,actionlink,html.actionlink,Asp.net,Asp.net Mvc,Razor,Actionlink,Html.actionlink,我对Html.ActionLink方法有问题 如果我使用 @Html.ActionLink("Some text", "MyAction", "MyController", new { id = 1234 }, null) 我得到一个链接,链接如下: http://web.com/MyController/MyAction/1234 http://web.com/MyController/MyAction/1234?param1=3&param2=10 这很好,但是如果我使用更多的

我对
Html.ActionLink
方法有问题

如果我使用

@Html.ActionLink("Some text", "MyAction", "MyController", new { id = 1234 }, null)
我得到一个链接,链接如下:

http://web.com/MyController/MyAction/1234
http://web.com/MyController/MyAction/1234?param1=3&param2=10
这很好,但是如果我使用更多的路由值,比如

@Html.ActionLink("Some text", "MyAction", "MyController", new { id = 1234, param1 = 3, param2 = 10 }, null)
我得到一个链接,链接如下:

http://web.com/MyController/MyAction/1234
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 */ }
这是我的RouteFig.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 }
        );
    }
}
这是你的解决方案

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
);

我在action
public ActionResult-MyAction(string-id,byte-param1,byte-param2)中有这个属性
[Route(“MyController/MyAction/{id}/{param1}/{param2}”)
,我想也是这样。你能给我们看看你的路由配置吗?用controller和Route-config编辑的问题。我遗漏了什么吗?请尝试使用我答案中的路线。是的,它是“
MyControllerController”
。如果我使用Alexandru的答案,它是有效的,但我想了解在
RouteConfig
中添加
MapRoute
或在控制器中使用
Route
属性之间的区别。