0

мне нужен этот адрес http://localhost:53249/Admin/EditPosts/1/Edit, но, к сожалению, им получать строку запроса в URL, как этот http://localhost:53249/Admin/EditPosts?id=1&operation=EditActionLink показать параметры в URL вместо строк запроса MVC

Это мой ActionLink (якорный тег)

<td>@Html.ActionLink(@posts.Title, "EditPosts", "Admin", new { id = posts.id, operation="Detail" }, null)</td> 

Это мой маршрут config:

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

      routes.MapMvcAttributeRoutes(); 
      routes.MapRoute(
      name: "Admin", 
      url: "Admin/EditPosts/{id}/{operation}", 
      defaults: new { controller = "Admin", action = "EditPosts"} 
     ); 

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

     } 

ответ

1

В этом случае вы смешиваете действие и операцию.

Я предлагаю вам использовать URL, как это:

http://localhost:53249/Admin/Posts/1/Edit 

Потому что таким образом вы уже показывают свои действия, Edit, ибо сообщений объектов и Редактировать это действие, а не операцию, следуя стандарту REST.

Чтобы использовать URL предложил вам необходимо изменить MapRoute к:

routes.MapRoute(
    name: "Admin", 
    url: "Admin/Posts/{id}/{action}", 
    defaults: new { controller = "Posts", action = "Details" } //Details action by default 
); 
+0

Благодаря @guilherme, но после того, что я получаю URL как этот HTTP: // локальный: 53249/администратора/Сообщения/1/Сообщения ? operation = Edit –

+0

Попробуйте с ссылкой на действие: @ Html.ActionLink (@ posts.Title, "Edit", "Posts", new {id = posts.id}, null) – Guilherme

+0

, но у меня есть 2 параметра first один - это id, а второй - операция (редактировать, детали) –

 Смежные вопросы

  • Нет связанных вопросов^_^