Modo corretto di gestire le manovre attraverso le pagine utilizzando i pulsanti in ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/1229488

  •  22-07-2019
  •  | 
  •  

Domanda

Sto scrivendo un'app con ASP.NET MVC in cui, per vari motivi, la navigazione viene gestita tramite i pulsanti di input HTML. Quali sono le migliori pratiche su come gestire questa situazione?

  1. Imposta un modulo sui pulsanti in cui è necessario POSTARE le informazioni e utilizza JavaScript per reindirizzare i pulsanti in cui non è necessario conservare le informazioni

  2. Gestisci tutti i pulsanti attraverso i moduli, al punto in cui un mini-modulo gestisce la navigazione sui pulsanti in cui non è necessario conservare le informazioni

    <% using (Html.BeginForm())
       { %>
    <input type="hidden" name="controller" value="1" />
    <input type="hidden" name="action" value="Location" />
    <input id="BackButton" type="submit" value="Go Back" />
    <% } %>
    
  3. Qualcosa a cui non ho pensato qui

È stato utile?

Soluzione

  1. Javascript è probabilmente la soluzione migliore.

L'uso di un mini form sembra davvero pesante. Stai fondamentalmente cercando di utilizzare un pulsante come link (esaminerei seriamente il motivo per cui stai infrangendo quella convenzione web molto semplice: i pulsanti post / modifica e i collegamenti navigano) in modo che più semplice puoi renderlo migliore.

Altri suggerimenti

Qui puoi trovare un buon articolo su come modellare un tag di ancoraggio come un pulsante

3: dai uno stile ad alcuni tag di ancoraggio per assomigliare a pulsanti.

In una recente applicazione abbiamo implementato l'opzione 1. Al client è piaciuto avere " Annulla " pulsanti su tutti i moduli (...) quindi abbiamo appena bloccato un evento click sugli input di reset che ha fatto:

history.go(-1); return false;

Usa tag <a href="#"> vuoti e Javascript / jQuery. Ad esempio:

Nella vista:

<script src="<%= Url.Content("~/Content/navigation.js") %>" type="text/javascript"></script>
...
<a id="back" href="#">Back</a>
<a id="next" href="#">Next</a>

<script type='text/javascript'>
    var back_href="<%= Url.Action("...") %>";
    var next_href="<%= Url.Action("...") %>";
</script>

Da qualche parte in navigation.js:

$(document).ready(function() {
    $('a#back').attr('href', back_href);
    $('a#next').attr('href', next_href);
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top