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¶m2=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¶m2=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¶m2=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
属性之间的区别。