Динамически изменять действие формы на основе значения выпадающего списка - PullRequest
1 голос
/ 02 июня 2011

У меня есть частичное представление (search.ascx), которое содержит раскрывающийся список, текстовое поле и кнопку отправки.

При нажатии кнопки отправки мне бы хотелось, чтобы метод действия формы отражал выбранное значение в раскрывающемся списке.

например. drowpdownlist содержит такие значения, как:

  • DVD
  • Blueray
  • VHS

Итак, выбрав «VHS», окончательный URL-адрес действия должен быть:

site.com / DVD? Поиск = TextDefinedInTheTextField. Как это сделать?

Текущая реализация

 <% using(Html.For.BeginForm("List", "Products", FormMethod.Get)) { %>
    <%: Html.DropDownListFor(model => model.CategoryName, Model.TopLevelCategoriesList, new {@class = "searchCategoryDropDown" })%>
    <%: Html.TextBoxFor(x => x.SearchString, new {@class = "searchField" })%>
    <a>
        <input class="searchBtn" id="searchButton" type="submit" value="Søg" />
    </a>
<% } %>

Проблема с вышеприведенной реализацией состоит в том, что созданный тег «form» является статическим и не отражает значение раскрывающегося списка.

Есть идеи?

ОБНОВЛЕНИЕ РЕШЕНИЯ Итак, я понял, что с помощью Jquery вы можете динамически изменять действие в форме.

$(function () {
    $('#searchForm').submit(function () {
    this.action = $('#searchCategory').val();
   return true;
  });
});

1 Ответ

1 голос
/ 03 июня 2011

Вместо того, чтобы возиться с динамическими действиями на стороне клиента, которые могут иметь свои собственные проблемы при сбое JavaScript, отключении и т. Д., Почему бы просто не обработать это действие в контроллере?Это немного более читабельно.Так как ваше представление визуализируется, я предполагаю один контроллер со всеми этими опциями, рассмотрим один метод контроллера для обработки поста и определения, что делать.Это немного более читабельно.

...