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 ответа:
Вы должны добавить этот маршрут в качестве первой записи в 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" });