Показывать только непустые параметры в строке запроса при добавлении формы - PullRequest
1 голос
/ 25 октября 2019

Прежде всего я уже видел это: Не включайте пустые параметры при отправке формы

Но в форме вы можете не только вводить, но и выбирать, например, и что если кто-тоJavascript отключен? Разве нет лучшего способа скрыть пустые параметры?

Допустим, у меня есть такая форма:

<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>

Теперь, если я выбрал длину в поле выбора и нажал фильтр, у меня естьэтот URL в окне браузера:

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

, но я хочу это:

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

или, если я только искал марку без указания длины, я хотел бы получить это:

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

Есть какой-нибудь вспомогательный тег, например, добавление в форму hide-empty="true" или что-то в этом роде? Есть готовый элемент или просто решение этой простой проблемы?

1 Ответ

0 голосов
/ 28 октября 2019

Если вы настаиваете на выполнении этого требования, вы можете попытаться отключить пустой ввод. Для отключенного поля он не будет генерировать строку запроса.

Попробуйте что-то вроде:

<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>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...