根据下拉列表值动态修改表单操作

时间:2011-06-02 15:25:52

标签: model-view-controller forms dynamic action

我有一个局部视图(search.ascx),其中包含一个下拉列表,一个文本字段和一个提交按钮。

单击提交按钮时,我希望表单操作方法在下拉列表中反映所选值。

E.g。 drowpdownlist包含以下值:

  • DVD
  • Blueray
  • VHS

因此,通过选择“VHS”,最终的动作网址应为:

site.com/DVD?search=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 个答案:

答案 0 :(得分:1)

如果javascript失败,禁用等,而不是简单地在控制器中处理此操作,而不是在客户端上摆弄动态操作,而这可能有自己的主机问题? 它更具可读性。由于我假设一个控制器具有所有这些选项来呈现您的视图,因此请考虑使用单个控制器方法来处理帖子并确定要执行的操作。它也更具可读性。