2009-08-14 2 views
0

У меня возникают проблемы с Html.ActionLink, когда у меня есть маршрут, который принимает один параметр. У меня есть следующие маршрутизаторы в global.asx:Проблемы с настраиваемым маршрутом в ASP.NET MVC

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "materias", 
      "{controller}/{action}/{id},{titulo_materia}.html", 
      new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
     ); 

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

http://meusite.com/controller-name/[parameter],.html

EDIT:

Вот ссылка действия, i возникли проблемы:

<span class="editar"><%=Html.ActionLink("Editar", "Edit", "Users", new { id = this.Model.login }, null)%></span> 

Эта ссылка находится на другой странице, которая используется для управления пользовательскими данными.

+0

разместим ваш Html.ActionLink код –

+0

я редактировал свой пост с кодом ActionLink. – Cleiton

+0

Что произойдет, если вы переместите второе правило маршрута до первого? –

ответ

1

Во-первых, вы должны поставить свой самый общий маршрут в нижней части.

Тогда, как насчет делать что-то вроде:

routes.MapRoute(
     "materias", 
     "{materias}/{action}/{id},{titulo_materia}.html", 
     new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
    ); 

    routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 

Таким образом, маршрут Materias работает только для контроллера Materias. (Не проверено)

EDIT: htmm .. попробуйте использовать пример Мартина с небольшим добавлением:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action",id = this.Model.login }); 
+0

Я протестировал его ... Но я получаю тот же результат. Когда я пытаюсь создать ссылку с помощью actionlink с двумя параметрами, я получаю что-то вроде «http://meusite.com/controllerName/[first-paramters]?titulo_materia=foobar – Cleiton

+0

Да, я сделал это, и все получилось! Спасибо! – Cleiton

0

Использование:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action" }); 
+0

@Martin, но мне нужно передать идентификатор пользователя, чтобы получить информацию о пользователе. – Cleiton