asp.net mvc исходящая маршрутизация из поста GET form - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть маршрут, который выглядит так:

new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional, sku = UrlParameter.Optional}

и у меня есть форма, которая выглядит следующим образом:

  <%using(Html.BeginForm("PhotoGallery", "ControllerName", FormMethod.Get)) {%>
  <%:Html.Hidden("filtertype", "1")%>
  <%:Html.DropDownList("filtervalue", ViewData["Designers"] as SelectList, "Photos by designer", new { onchange = "selectJump(this)" })%>
  <%}%>

Прямо сейчас, когда форма отправлена, я получаю значения формы, добавленные к URL-адресу в виде строк запроса (? Filtertype = 1 и т. Д.). Есть ли способ заставить эту форму использовать маршрутизацию для отображения URL?

Таким образом, форма будет размещать URL, который выглядит следующим образом:

www.site.com/photo-gallery/1/selectedvalue

а не как "

www.site.com/photo-gallery?filtertype=1&filtervalue=selectedvalue

Спасибо!

1 Ответ

1 голос
/ 18 сентября 2010

Если у вас есть только некоторые параметры, Mvc создаст тип строки запроса Url, если не найдет точный соответствующий URL.

Предположим, вам понадобится что-то вроде:

routes.Add("testRoute", 
new Route("/{action}/{controller}/{slug}/{filtertype}/{filtervalue}",
new { controller = "ControllerName", action = "PhotoGallery", slug = "photo-gallery", filtertype = UrlParameter.Optional, filtervalue = UrlParameter.Optional}
);

убедитесь, что это до вашего существующего маршрута

...