ASP.net MVC Маршруты - PullRequest
       7

ASP.net MVC Маршруты

1 голос
/ 04 февраля 2009

В настоящее время я создаю мобильную версию сайта моей компании и использую ее как время для изучения 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" как параметр, что работает, но неверно.

1 Ответ

2 голосов
/ 04 февраля 2009

С RedirectToRoute вы должны передать название маршрута, на который вы нацелены, так:

return RedirectToRoute("JobsByLocation", new { location = Continents, pagenumber = "1" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...