В настоящее время я создаю мобильную версию сайта моей компании и использую ее как время для изучения asp.net mvc.
URL-адреса, которые я собираюсь создать, следующие:
Работа / в / место
Работа / для / jobTitle
Работа / in / location / for / jobtitle
работа / для / названия работы / в / местоположение
Теперь, чем больше типов мы добавим, тем больше мне нужно будет добавить и разных маршрутов, которые мне понадобятся, поэтому в действительности не поддерживается.
Так что в настоящее время в моем Global.asax.cs есть
//Jobs
routes.MapRoute(
"DefaultJobs", // Route name
"Jobs/{pagenumber}", // URL with parameters
new { controller = "Jobs", action = "Default", pagenumber = "1" } // Parameter defaults
);
//Jobs by Location
routes.MapRoute(
"JobsByLocation", // Route name
"Jobs/in/{location}/{pagenumber}", // URL with parameters
new { controller = "Jobs", action = "Default", location = "", pagenumber = "1" } // Parameter defaults
);
//Jobs by Title
routes.MapRoute(
"JobsByTitle", // Route name
"Jobs/for/{title}/{pagenumber}", // URL with parameters
new { controller = "Jobs", action = "Default", title= "", pagenumber = "1" } // Parameter defaults
);
//Jobs by Title and Location
routes.MapRoute(
"JobsByTitleAndLocation", // Route name
"Jobs/for/{title}/in/{location}/{pagenumber}", // URL with parameters
new { controller = "Jobs", action = "Default", location = "", title = "", pagenumber = "1" } // Parameter defaults
);
Так что я не уверен, что это правильно, так как в моем JobsController у меня было «in» в качестве контроллера, но я мог получить только один параметр. Поэтому я выбрал стандартный, который все поймал.
public ActionResult Default(string location, string title, string pagenumber)
{
return Content("Location " + location + " Title " + title + " Page " + pagenumber);
}
Теперь это правильный способ сделать это? Или я что-то пропустил?
Для вызова этого метода у меня есть
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SearchContinent(string Continents)
{
try
{
// TODO: Add update logic here
//return RedirectToAction("Default","Jobs",
//new {
// location = Continents
// });
return RedirectToRoute(new { controller = "Jobs", action = "Default", location = Continents, pagenumber = "1" });
//return Redirect("Jobs/in/" + Continents);
}
catch
{
return View();
}
}
Теперь это не дает правильный URL-адрес, поскольку он пропускает "in" и передает "location" как параметр, что работает, но неверно.