求和表格时仅显示查询字符串中不为空的参数

时间:2019-10-25 17:05:47

标签: html asp.net asp.net-mvc asp.net-core

首先我已经看到了:Don't include empty parameters when submitting form

但是在形式上,您不仅可以输入,还可以选择例如,如果有人禁用了Java脚本怎么办?有没有更好的方法来隐藏空参数?

假设我有一个这样的表格:

<form asp-controller="Vehicles" asp-action="Index" method="get" >
<p>
    <select asp-for="Length" asp-items="Model.Lengths">
        <option value="">All</option>
    </select>

    Brand: <input type="text" asp-for="Search">
    <input type="submit" value="Filter" />
</p>
</form>

现在,如果我从选择框中选择长度并单击过滤器,那么我在浏览器窗口中就有以下网址:

https://localhost:44358/Vehicles?Length=15&Search=

但是我想要这个:

https://localhost:44358/Vehicles?Length=15

或者如果我只搜索品牌而没有挑选长度,我想拥有它:

https://localhost:44358/Vehicles?Search=Mercedes

是否有一些辅助标签,例如添加到表单hide-empty="true"或类似的东西?对于这个简单的问题,有准备使用的元素还是简单的解决方案?

1 个答案:

答案 0 :(得分:0)

如果坚持要达到此要求,则可以尝试禁用为空的输入。对于禁用字段,它将不会生成查询字符串。

尝试类似的东西:

<form asp-controller="Vehicles" asp-action="Index" method="get">
    <p>
        Brand: <input type="text" id="Search" name="Search">
        <input type="submit" value="Filter" onclick="return DisableNullFields();"/>
    </p>
</form>

@section Scripts{
    <script type="text/javascript">
        function DisableNullFields() {
        $('input').each(function(i) {
            var $input = $(this);
            if ($input.val() == '')
            $input.attr('disabled', 'disabled');
        });
    }
    </script>
}