Такое поведение действительно раздражает.Одним из обходных путей является полное удаление формы и создание URL-адреса вручную на стороне клиента.
Я использовал jQuery в одном из наших проектов .NET для достижения этой цели.Это маска поиска с десятками параметров.Одним из них является ползунок диапазона (мин / макс) значений.Вы используете ползунок, чтобы выбрать два значения и должны нажать на кнопку поиска рядом с ним.
<!-- Input fields (slider code removed) -->
<div class="input-fields">
@(Model.Unit) <input type="text" id="@(sliderMinId)" value="@(sliderSelMinVal)" />
to @(Model.Unit) <input type="text" id="@(sliderMaxId)" value="@(sliderSelMaxVal)" />
<input type="button" id="@(sliderButton)" value="Search" />
</div>
И обработчик события для кнопки:
UrlHelper h = UrlHelperExtensions.CreateRequestAgnosticUrlHelper();
/* Search-Button Click-EventHandler */
$("#@(sliderButton)").click(function(){
@{
string url = h.Action("Index", "SearchAction", new RouteValueDictionary(searchParams));
string urlSeparator = url.Contains("?") ? "&" : "?";
}
var url = '@Html.Raw(url + urlSeparator + sliderInfo.AssociatedFieldName)=' + $("#@Html.Raw(sliderMinId)").val() + '%20-%20' + $("#@Html.Raw(sliderMaxId)").val();
window.location.replace(url);
});
Вот что происходит:
- Создайте URL, содержащий все предыдущие параметры.
- Добавьте к нему новые параметры формы.В этом случае они добавляются как один параметр (min-max).Не позволяйте этому сбить вас с толку.
- Перенаправление на новый URL.
Это очень неудобно для чего-то, что может быть настолько простым ... Надеюсь, это поможет.*