#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)
Я получаю ссылку с этим 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=3amp;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 }
);
}
}
Комментарии:
1. У меня есть этот атрибут
[Route("MyController/MyAction/{id}/{param1}/{param2}")]
в действииpublic ActionResult MyAction(string id, byte param1, byte param2)
, я думал, что там было то же самое.2. можете ли вы показать нам конфигурацию вашего маршрута?
3. Вопрос отредактирован с помощью контроллера и конфигурации маршрута. Я что-то упускаю?
4. Пожалуйста, попробуйте использовать маршрут из моего ответа.
5. Да, это »
MyControllerController"
. Если я использую ответ Александру, это сработает, но я хотел бы понять, в чем разница между добавлениемMapRoute
вRouteConfig
или использованиемRoute
атрибута в контроллере.
Ответ №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
);