Questo comportamento è davvero fastidioso. Una soluzione alternativa consiste nel rilasciare completamente il modulo e creare il tuo URL manualmente sul lato client.
Ho utilizzato jQuery in uno dei nostri progetti .NET per ottenere ciò. È una maschera di ricerca con decine di parametri. Uno di questi è un valore di intervallo (min/max). Usa il cursore per selezionare due valori e devi premere il pulsante di ricerca accanto ad esso.
<!-- 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>
E il gestore di eventi per il pulsante:
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);
});
Questo è ciò che accade:
- Costruire un'URL che contiene tutti i parametri precedenti.
- Aggiunge i nuovi parametri "modulo" ad esso. In questo caso vengono aggiunti come un parametro (min-max). Non lasciare che questo ti confonda.
- Reindirizzare al nuovo URL.
Questo è assolutamente imbarazzante per qualcosa che potrebbe essere così semplice ... Spero che questo aiuti.
fonte
2014-02-19 08:00:43
Cosa intendi con "non invia"? Qual è l'URL a cui viene inviato il modulo? – roryf
dopo averlo inviato verrà reindirizzato a 'some.php? Nome1 = valore1', perde'? Id = valore' – Simon