2015-09-19 2 views
0

Я хочу показать мою ссылку в URL, как что:Edit URL в ASP.Net MVC

http://localhost:60000/Admin/myControlerName/myActionName/3/7/2

Это мой routConfig:

enter image description here

Это мой contoller:

enter image description here

Это моя ссылка действие:

enter image description here

MyLink показывает в URL так:

http://localhost:60000/Admin/myControlerName/myActionName/?id1=3&id2=7&id3=2

Но я хочу, чтобы показать, как что:

http://localhost:60000/Admin/myControlerName/myActionName/3/7/2

Где моя ошибка? :(

ответ

2

У вас есть 2 различных вопроса. Прежде всего, это не сработает правильно, чтобы сделать 3 необязательных параметра на маршруте. Только последний (самый правый) параметр может быть дополнительным. Итак, вам нужны два маршрута для того, чтобы все комбинации 0, 1, 2, 3, 4 или 5 сегментов в URL.

// This will match URLs 4 or 5 segments in length such as: 
// 
// /Home/Index/2/3 
// /Home/Index/2/3/4 
// 
routes.MapRoute(
    name: "4-5Segments", 
    url: "{controller}/{action}/{id}/{id2}/{id3}", 
    defaults: new { id3 = UrlParameter.Optional } 
); 

// This will match URLs 0, 1, 2, or 3 segments in length such as: 
// 
// /
// /Home 
// /Home/Index/ 
// /Home/Index/2 
// 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

во-вторых, ваш ActionLink не соответствует заданному, потому что вы указали значение маршрута в id1, но в ваш маршрут составляет id. Таким образом, вам необходимо изменить ActionLink следующим образом:

@Html.ActionLink("my text", "myActionName", "myControllerName", new { id = 3, id2 = 7, id3 = 2}, null) 

Это предполагает, что вы правильно настроить контроллер:

public class myControllerNameController : Controller 
{ 
    // 
    // GET: /myActionName/ 

    public ActionResult myActionName(int id = 0, int id2 = 0, int id3 = 0) 
    { 
     return View(); 
    } 

} 

См working demo here.

Для дальнейшего использования, пожалуйста, предоставьте код в виде текста. Очень сложно скопировать и отредактировать изображение, так что вы вряд ли получите ответ.

+0

Я пытался, но все еще такой же результат :( – junior

+0

Для того, чтобы работать, ваше имя контроллера должно быть ровно 'myControllerNameController'. Я поставил его в тестовом проекте, и он прекрасно работает так, как я, указанный здесь. – NightOwl888

+0

Имя моего контроллера, как вы сказали. Имя должно быть таким? 'name:" 4-5Segments "' – junior