Hành vi này thực sự gây phiền nhiễu. Một cách giải quyết khác là thả biểu mẫu hoàn toàn và tạo url của bạn bằng tay ở phía máy khách.
Tôi đã sử dụng jQuery trong một trong các dự án .NET của chúng tôi để đạt được điều này. Nó là một mặt nạ tìm kiếm với hàng chục tham số. Một trong số đó là một giá trị thanh trượt phạm vi (tối thiểu/tối đa). Bạn sử dụng thanh trượt để chọn hai giá trị và phải nhấn vào nút tìm kiếm bên cạnh nó.
<!-- 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>
Và xử lý sự kiện cho nút:
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);
});
Đây là những gì sẽ xảy ra:
- Xây dựng một Url chứa tất cả các thông số trước.
- Nối các tham số "biểu mẫu" mới của bạn vào nó. Trong trường hợp này, chúng được thêm vào như một tham số (min-max). Đừng để điều đó làm bạn bối rối.
- Chuyển hướng đến Url mới.
Điều này hoàn toàn khó xử với một thứ có thể đơn giản như vậy ... Tôi hy vọng điều này sẽ hữu ích.
Nguồn
2014-02-19 08:00:43
Ý bạn là gì bởi "không gửi"? URL này gửi biểu mẫu tới là gì? – roryf
sau khi gửi nó sẽ được chuyển hướng đến 'some.php? Name1 = value1', nó mất'? Id = value' – Simon