URL-адрес в MVC маршрутизации для пользовательских URL-адрес


Я хочу передать ссылку url как

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

Я попробовал ниже маршрутизацию в глобальном файле aspx и создал контроллер с именем Jobs и результатом действия индекса с папкой Jobs, но не работает.

 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); 
    } 
}

Что я делаю не так? Пожалуйста помочь.

4 2

4 ответа:

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

Источник

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

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

Вашему контроллеру заданий требуется индексное действие с именованным параметром 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://localhost:24873/[companyname] / Jobs/)

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

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

//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" });