我在一个ASP.NET MVC应用程序中工作,并且有一个数据表。在数据表的上方,我有一个具有各种输入的表单,用于过滤表。
表单使用GET
方法将表单数据传输到服务器,这很好用,但是即使我只想过滤一件事(例如制造商名称),所有其他输入参数也会发送到查询字符串中!如下所示:
http://localhost/mysite/page1?Tab=Pending&SortBy=&SortAscending=False&Manufacturer=Toyota&Model=&RegNumberFilter=
正如您所看到的,我只填写了制造商,但其他所有内容也都提交了!有没有一种简单的方法可以清理我的URL,以便只在查询字符串中显示设置的过滤器?
我的筛选器表单如下:
<div class="panel-body">
@using (Html.BeginForm("Index", "page1", FormMethod.Get, new { @role = "form", @class = "form-inline" }))
{
@Html.Hidden("Tab", Model.Tab);
@Html.Hidden("SortBy", Model.SortBy);
@Html.Hidden("SortAscending", Model.SortAscending);
<div class="form-group">
<label class="sr-only" for="Manufacturer">Manufacturer</label>
@Html.TextBoxFor(x => x.Manufacturer, new { @class = "form-control", @placeholder = "Manufacturer" })
</div>
<div class="form-group">
<label class="sr-only" for="model">Model</label>
@Html.DropDownListFor(x => x.model, Model.model, new { @class = "form-control" })
</div>
<div class="form-group">
<label class="sr-only" for="RegNumberFilter">Reg Number</label>
@Html.TextBoxFor(x => x.RegNumberFilter, new { @class = "form-control", @placeholder = "Reg Number" })
</div>
<div class="btn-toolbar" role="toolbar">
<input type="button" class="btn btn-default" onclick="clear_form_elements(this.form)" value="Clear Filter" />
<button type="submit" class="btn btn-primary">Apply</button>
</div><!-- .btn-toolbar -->
}
</div>
发布于 2015-10-07 22:54:41
假设你还在寻找这个问题的答案,就像我一样,我现在已经有了一个非常快速和粗糙的方法来处理这样的案例。
function submitSearch() {
$('#tblSearchForm input[type="text"]').each(function () { if (this.value == "") this.remove(); });
$('#tblSearchForm select').each(function () { if (this.selectedOptions.length > 0 && this.selectedOptions[0].value == "") this.selectedIndex = -1; });
}
在包含htmlAttributes的表单匿名对象中,只需包含:
onSubmit = "submitSearch()"
作为额外的键/值。
它又快又脏,但它做得很好。可能有比大锤"this.remove()“更好的东西,如果有的话,我很乐意使用更合适的东西。
编辑:对于那些必须提供IE8兼容性的人,this.remove()将无法工作...请改用this.parentNode.removeChild(this)。
https://stackoverflow.com/questions/23213733
复制相似问题