MVC3 / Razor Форма отправки с маршрутами сопоставлены? - PullRequest
0 голосов
/ 27 мая 2011

В моем Global.asax определены следующие маршруты:

    routes.MapRoute(name: "Home", url: "", defaults: new { controller = "Home", action = "Index" });
    routes.MapRoute(name: "CityStateResults", url: "{city}-{state}/{searchTerm}", defaults: new { controller = "Results", action = "SearchCityState" });
    routes.MapRoute(name: "CanadianProvinceResults", url: "CanadianProvinces/{state}/{searchTerm}", defaults: new { controller = "Results", action = "SearchCanadianProvinces" });
    routes.MapRoute(name: "AllCanadianResults", url: "Canada/{searchTerm}", defaults: new { controller = "Results", action = "SearchAllOfCanada" });

Теперь я хочу написать функциональность отправки формы Razor, которая принимает два поля: txtSearchTerm и txtLocation.

Формат txtLocationвсегда будет состоять из [Город, Штат] или [Штат] или [Страна] и управляется базой данных, поэтому никакие другие значения, кроме указанных в БД, не будут приняты в этом поле.

Еслиместоположение [Город, штат], я хочу, чтобы форма перенаправлялась в / город-штат / searchTerm.Если местоположение соответствует состоянию, я хочу перенаправить в / CanadianProvinces / [state] / [searchterm].Если местоположение соответствует стране, я хочу перенаправить в /Canada/[searchterm].

У меня есть контроллер результатов с некоторыми настройками действий, но неясно, что касается первых шагов.Я уверен, что могу сделать это с помощью клиентского javascript и перенаправления, но я хотел бы знать стандартный способ сделать это с C #, Razor и MVC3.

Спасибо.

1 Ответ

1 голос
/ 31 мая 2011

По умолчанию отправка отправляется тому же контроллеру, который обработал страницу. Если нет, вы можете использовать ajax-вызов для конкретного контроллера / метода, который будет целевым методом. Поместить сложные правила маршрутизации в таблицу маршрутизации очень сложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...