2012-03-14 3 views
2

Я хочу передать ссылку URL какMVC Url Routing Для пользовательских URL

http://localhost:24873/Jobs/[companyname] 
or 
http://localhost:24873/[companyname]/Jobs/ (Preferred) 

Я попытался ниже маршрутизации в глобальном файле ASPX и созданного контроллера с именем Работа и результат действия Index с папкой рабочих мест, но не работает.

routes.MapRoute(
      "JobList", // Route name 
      "Jobs/{companyname}", 
       new 
       { 
        controller = "Jobs", 
        action = "Index", 
        companyname = string.Empty 
       } 
     ); 

И мой контроллер:

public partial class JobsController : Controller 
{ 
    public ActionResult Index() 
    { 
      JobsListModel model = new JobsListModel(); 
      return View(model); 
    } 
} 

Что я делаю неправильно? Пожалуйста помоги.

+1

Что вы имеете в виду, не работая? Он не выполняет метод контроллера? Это не соответствует маршруту? Это сообщение об ошибке? Вы пробовали [маршрут тестера Фила Хака] (http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx) на нем? –

+0

Это страница ресурса не может быть найдена. Не могли бы вы поправить меня для маршрутизации? чтобы соответствовать и работать как мой пример url –

+2

Вы добавили этот маршрут в качестве первой записи MapRoute в файле Global.asax? –

ответ

3

Вы должны добавить этот маршрут в качестве первой записи в global.asax, в противном случае запрос будет направлен на маршрут по умолчанию (или маршрут до него)

Source

+0

Спасибо, но все еще немного запутался в его заказе. Поскольку я также добавляю его после root по умолчанию. Вы имеете в виду, что сначала добавляете его, чтобы сначала проверять пользовательские маршруты. –

+0

@Keyur - Да, сначала нужно добавить этот настраиваемый маршрут и добавить маршрут по умолчанию. Сначала запрос попытается использовать ваш собственный маршрут. –

+0

Благодарим за помощь:) –

3

Чтобы добавить к предыдущему ответу, если вы хотите, чтобы ваш предпочтительный маршрут http://localhost:24873/[companyname]/Jobs/ работал, добавьте этот маршрут еще раз перед маршрутом по умолчанию.

routes.MapRoute(
    "JobList", // Route name 
    "{companyname}/Jobs", 
    new 
    { 
    controller = "Jobs", 
    action = "Index", 
    companyname = string.Empty 
    } 
); 
+0

как/где добавляется название компании? – DevDave

+1

он будет передан через URL-адрес при запросе страницы, вот что предлагает {companyname} в определении маршрута, string.Empty просто дает значение по умолчанию –

0

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

public ActionResult Index(string companyname) 
{ 
     //Do some checking on the name 
     JobsListModel model = new JobsListModel(); 
     return View(model); 
} 

Вы, вероятно, все еще нуждаются в пустое действие, а также:

public ActionResult Index() 
{ 
    return Index(string.Empty); 
} 

О, пропустил это. Как парень впереди меня сказал, чтобы получить ваш другой URL, чтобы работать это сделать: (HTTP: // локальный: 24873/[НазваниеКомпании]/Работа /)

routes.MapRoute(
    "JobList", // Route name 
    "{companyname}/Jobs", 
    new 
    { 
    controller = "Jobs", 
    action = "Index", 
    companyname = string.Empty 
    } 
); 
-1

Попробуйте это: -

//Default url 

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
    "Default", 
    "", 
    new { controller = "Home", action = "Index", id = "" } 
); 

//others url rewriting you want 

RouteTable.Routes.MapRoute(null, "Jobs/{companyname}", new { controller = "Jobs", action = "Index" });