我有一个局部视图(search.ascx),其中包含一个下拉列表,一个文本字段和一个提交按钮。
单击提交按钮时,我希望表单操作方法在下拉列表中反映所选值。
E.g。 drowpdownlist包含以下值:
因此,通过选择“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;
});
});
答案 0 :(得分:1)
如果javascript失败,禁用等,而不是简单地在控制器中处理此操作,而不是在客户端上摆弄动态操作,而这可能有自己的主机问题? 它更具可读性。由于我假设一个控制器具有所有这些选项来呈现您的视图,因此请考虑使用单个控制器方法来处理帖子并确定要执行的操作。它也更具可读性。