38 messaggi dal 20 ottobre 2009
Ciao ragazzi! Sto iniziando a valutare l'integrazione di JQuery mobile e asp.net MVC 4.0 (Razor) per la gestione della versione mobile del mio sito. Naturalmente molte logiche ho notato che sono totalmente differenti dal paradigma "EventHandler/Http Post/Viewstate". Proprio in merito a ciò, vi chiedo se potete darmi qualche dritta per poter gestire nel modo più agile e funzionale possibile la dinamica ben nota riguardo il postback dei dati "Submit -> EventHandler". In una pagina ho differenti submit buttons e ciascuno di essi fà il postback....come posso creare una situazione che sia il più possibile "affine" con quella nota nei WebForms sfruttando le actions ? In pratica suggeritemi vari modelli di riferimento cui posso approfondire per ottener tale risultato tramite l'uso di JQuery Mobile e Asp.net MVC 4.0.

Grazie!!
Un in bocca al lupo e in gamba ! ;)

Ci sono solo 10 categorie di persone al mondo: quelle che non conoscono il binario e quelle che lo conoscono.
420 messaggi dal 23 marzo 2010
Contributi
Se ho ben capito, stai chiedendo due cose ben distinte:

1) come fare un HTTP POST in più form con ASP.NET MVC

2) Implementare JQuery mobile nel tuo sito web

sbaglio?
Modificato da Mirko Pastorelli il 18 aprile 2013 21.37 -
38 messaggi dal 20 ottobre 2009
Ciao Mirko, non proprio. Sto chiedendo quali sono le migliori strade da seguire per poter fare http POST (asincrono) in asp.net MVC, sfruttando la framework di jQuery. Più riesco ad avvicinarmi al modello "OnClick=EventHandler", meglio mi trovo (non intendo fare la stessa cosa ma come gestire la situazione al meglio sfruttando le 2 tecnologie suddette).

:)

Ci sono solo 10 categorie di persone al mondo: quelle che non conoscono il binario e quelle che lo conoscono.
38 messaggi dal 20 ottobre 2009
Realizzo che ve ne state fottendo tutti....:)

Grazie uguale....:)

Ci sono solo 10 categorie di persone al mondo: quelle che non conoscono il binario e quelle che lo conoscono.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Sl4ck3r,
prego, i ringraziamenti sono sempre graditi perché sono l'unica "valuta" che compensa il contributo volontario degli utenti della community.

Sl4ck3r ha scritto:
Più riesco ad avvicinarmi al modello "OnClick=EventHandler", meglio mi trovo

Ok, penso che tu possa provare il pacchetto jQuery Unobtrusive Ajax che puoi scaricare da NuGet (o aggiornare, se era già nel tuo progetto).
http://nuget.org/packages/jQuery.Ajax.Unobtrusive/
Aggiungi alla pagina sia il riferimento a jQuery sia a jQuery.unobtrusive che trovi nella cartella /Scripts.
In particolare, fai attenzione alla versione di jQuery che usi perché la 1.9 non è ancora supportata da quel pacchetto ma jQuery Mobile potrebbe richiederla. Se la usi, probabilmente dovrai anche includere il plugin jquery-migrate, che ripristina le funzionalità deprecate nella 1.9.

Inoltre, per abilitarne il supporto, assicurati nel nel nodo configuration/appSettings del tuo web.config ci sia la seguente istruzione:
<add key="UnobtrusiveJavaScriptEnabled" value="true" />


jQuery.Ajax.Unobtrusive ti permette di creare un form i cui valori verranno inviati al server con una richiesta ajax.
In questo esempio trovi il campo "Nome" il cui valore, a seconda del bottone cliccato, verrà inviato all'azione1 o all'azione2 dell'HomeController.
@{using(Ajax.BeginForm(new AjaxOptions{ HttpMethod="Post", OnSuccess="leggiRisultati" })){
<div>Nome: <input type="text" name="nome" value="ciao" /></div>
<input type="submit" value="Esegui azione 1" onclick="javascript: this.form.action='/home/azione1';" />
<input type="submit" value="Esegui azione 2" onclick="javascript: this.form.action='/home/azione2';" />
}
}

Come vedi, i bottoni sono vicini a ciò che chiedevi. Sul loro onclick viene indicato il percorso alla action che dovrà gestire i dati del form.
onclick="javascript:this.form.action='/home/azione2';"
Al click del bottone, l'action del form verrà impostata su (ad esempio) "/Home/azione2". Questa action, dopo aver elaborato i dati, può restituire ciò che vuoi come un JsonResult o una porzione di HTML per aggiornare l'interfaccia. Puoi fare in modo che sia l'action di un ApiController, se lo preferisci.
Il risultato prodotto dal server sarà poi gestito dalla funzione javascript "leggiRisultati", come indicato nell'opzione OnSuccess.

Tutto questo è integrabile con jQuery Mobile perché, come vedi da questa pagina dimostrativa, i bottoni dei form restano pur sempre dei semplici <input type="submit", nonostante siano stati decorati con varie classi e data attributes.

Questa era forse la soluzione più vicina alle tue esigenze, facci sapere se funziona.

ciao
Modificato da BrightSoul il 23 aprile 2013 00.44 -

Enjoy learning and just keep making
38 messaggi dal 20 ottobre 2009
BrightSoul, grazie mille del tuo contributo e del tempo speso, mi è stato molto utile nonostante piano piano ci stessi arrivando smanettando quà e là, ma mi hai confermato una strada da seguire che avevo intuito fra le tante. Rimane ora solo scegliere se buttarsi su asp.net MVC in toto togliendo via ScriptManager, WebForms & company o no. Ciò che noto che sicuramente con Asp.NET MVC hai miglior performance e molta più flessibilità ma devi scrivere più roba a manetta e c'è parecchio "Stuff" che si sposta su scripting lato client; con gli Update Panels e ScriptManager l'approccio usato era più trasparente e veloce ma secondo me peccava in termini di performance (penso è una mia ipotesi buttata qui di getto...).
Modificato da Sl4ck3r il 26 aprile 2013 04.05 -

Ci sono solo 10 categorie di persone al mondo: quelle che non conoscono il binario e quelle che lo conoscono.
11.886 messaggi dal 09 febbraio 2002
Contributi
Sl4ck3r ha scritto:

con gli Update Panels e ScriptManager l'approccio usato era più trasparente e veloce ma secondo me peccava in termini di performance

Esatto, le performance non erano ideali. Ad ogni postback parziale, l'intero viewstate (spesso pesante decine di kilobyes) deve essere re-inviato al server. Se i tuoi utenti sono all'iterno di una rete locale, allora probabilmente il problema non sussiste ma se si collegano via ADSL o 3G, allora potrebbero cominciare a notare il prolungarsi dei tempi di caricamento.

Ti invio questa risposta anche per aggiornare lo script che ti avevo inviato. Infatti mi sono accorto che, in HTML5, i bottoni dispongono di un nuovo attributo che ti consente di indicare l'action del form.
Niente più javascript, dunque. Si può usare l'attributo formaction.

@{using(Ajax.BeginForm(new AjaxOptions{ HttpMethod="Post", OnSuccess="leggiRisultati" })){
<div>Nome: <input type="text" name="nome" value="ciao" /></div>
<input type="submit" value="Esegui azione 1" formaction="/home/azione1" />
<input type="submit" value="Esegui azione 2" formaction="/home/azione2" />
}
}

Così è più conciso.

ciao

Enjoy learning and just keep making
1.508 messaggi dal 27 dicembre 2005
C'è qualche esempio su questo metodo ?

Ajax.BeginForm

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.