В настоящее время я создаю мобильную версию сайта моей компании и использую ее как время, чтобы узнать asp.net mvc.ASP.net MVC Routes
URL-адреса, которые я предназначены для создания в следующем
Работа/в/место
Работа/для/jobTitle
Работа/в/место/для/jobtitle
работы/для/jobtitle/in/location
Теперь чем больше типов мы добавляем, тем больше мне нужно будет добавлять и разные маршруты, в которых я нуждаюсь, поэтому не поддерживаю.
Так в настоящее время в моем 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 я имел «в» в качестве контроллера, но я мог только получить один параметр. Поэтому я пошел с дефолтом, который поймал все.
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, так как он отсутствует в «В» и проходит «местоположение» как пары, который работает, но неправильно ,
Cheers, является остальная часть кода в порядке? – Sarkie
Я бы сменил pagenumber на int и удалил try/catch в SearchContinent - я не уверен, в чем его цель. Но это трудно сказать без остальной части контекста. –