首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Form Method.GET:是否仅在查询字符串中显示填充的输入?

Form Method.GET:是否仅在查询字符串中显示填充的输入?
EN

Stack Overflow用户
提问于 2014-04-22 15:55:59
回答 1查看 82关注 0票数 0

我在一个ASP.NET MVC应用程序中工作,并且有一个数据表。在数据表的上方,我有一个具有各种输入的表单,用于过滤表。

表单使用GET方法将表单数据传输到服务器,这很好用,但是即使我只想过滤一件事(例如制造商名称),所有其他输入参数也会发送到查询字符串中!如下所示:

代码语言:javascript
复制
http://localhost/mysite/page1?Tab=Pending&SortBy=&SortAscending=False&Manufacturer=Toyota&Model=&RegNumberFilter=

正如您所看到的,我只填写了制造商,但其他所有内容也都提交了!有没有一种简单的方法可以清理我的URL,以便只在查询字符串中显示设置的过滤器?

我的筛选器表单如下:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 22:54:41

假设你还在寻找这个问题的答案,就像我一样,我现在已经有了一个非常快速和粗糙的方法来处理这样的案例。

代码语言:javascript
复制
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的表单匿名对象中,只需包含:

代码语言:javascript
复制
 onSubmit = "submitSearch()"

作为额外的键/值。

它又快又脏,但它做得很好。可能有比大锤"this.remove()“更好的东西,如果有的话,我很乐意使用更合适的东西。

编辑:对于那些必须提供IE8兼容性的人,this.remove()将无法工作...请改用this.parentNode.removeChild(this)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23213733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档