2009-09-10 15 views
5

Vedere come se il nostro team gestisse una Intranet che ha i clienti gli utenti con la garanzia di avere javascript abilitato sappiamo che possiamo intervenire e iniziare a utilizzare jQuery più "a fondo". Il nostro sistema è molto grande, quindi anche se usiamo le aree nella nostra applicazione ASP.NET MVC, la quantità di pagine per aggiungere, modificare, eliminare e visualizzare gruppi di dati per sottosistema di un'area è davvero piuttosto grande. Un sottosistema di un'area può avere circa venti tabelle di dati. Se ci sono venti tabelle di dati e hai singole pagine da aggiungere, modificare, eliminare e visualizzare, significa che c'è un totale di pagine. Ora immagina ci siano venti sottosistemi per area, quindi una singola area avrà 20 * 60 pagine e abbiamo circa 15 aree sulla nostra Intranet. Ottieni il punto, è enorme.jQuery CRUD in ASP.NET MVC

Passando al mio punto reale, sto cercando di ridurlo usando le funzionalità di jQuery di avere una tabella di dati su una pagina, premendo "cancella" e dandomi una finestra di dialogo di eliminazione con un pulsante di conferma che quindi inviare il modulo, reindirizzare all'azione corretta e fare il lavoro per me. Ora ho bisogno di una guida nelle seguenti aree:

  1. Se volevo eliminare senza postare affatto utilizzando ASP.NET MVC, qual è il processo per farlo? Ciò include la possibilità di eliminare l'eliminazione, la disattivazione e la verifica della sua eliminazione (le relazioni FK devono essere gestite nel modo corretto), quindi se è possibile eliminarlo e rimuovere la riga dalla tabella nella vista, tutto senza aggiornare la pagina.
  2. Come si chiama l'azione di eliminazione da un processo asincrono utilizzando jQuery? È saggio farlo? Di solito usiamo Html.ActionLink. Dovrei avvolgerlo in una forma?
  3. Lo stesso vale per la modifica e l'aggiornamento, ancora una volta, qual è il modo migliore per farlo?

Sto cercando una soluzione elegante e qualcosa che non è difficile da applicare per ogni pagina per cui devo farlo. Qualsiasi input sarebbe molto apprezzato.

+1

Solo curioso Hai guardato nel data quadro dinamico da MS? Penso che potrebbe supportare MVC ma non positivo. Se capisco correttamente, ridurrebbe il numero di pagine. Come ho detto solo curioso se l'hai cercato per questo sito. – JoshBerke

+2

I dati dinamici non funzionano bene con MVC, ma MVC 2 ha viste predefinite per modelli, che ti danno le parti più utili dei dati dinamici incorporati. –

risposta

3

Sto lavorando su un progetto che utilizza i collegamenti per di sparare le azioni di eliminazione tramite AJAX POST (senza postback).

$("a.deleteLink").click(function(event) 
{ 
    event.preventDefault(); 
    if (confirm("Are you sure you want to delete this section?")) 
    { 
     //TODO Display processing indicator 

     var myId = /* id of element */ ; 

     $.post("/Section/Delete", { id: myId }, function(data) 
     { 
      if (data == "Success") 
      { 
       //handle success 
       //TODO Fade out element using .fadeOut() 
      } 
      else 
      { 
       //handle error 
      } 
     }); 
    } 
}); 

Il metodo del controller è semplicemente in /Controllers/SectionController.cs. Accetta solo POST come ogni azione che modifica il database.

private SectionRepository secRepo = new SectionRepository(); 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Delete(long id) 
    { 
     Section sec = secRepo.GetById(id); 

     secRepo.Delete(sec); 
     secRepo.Save(); 

     return Content("Success"); 
    } 
+1

Penso che questo sia carino. Penso che il tuo '// TODO Display processing indicator' appartiene a una riga sopra/prima dell'azione' .post() ', tuttavia, e non nella funzione di callback in cui si trova (che dovrebbe solo sparare * dopo * l'azione è stata completata , non mentre stai aspettando ...) – Funka

+1

Oooh, questo sembra buono. Non ho mai visto 'return Content (" message ");' prima. Come mai "if (confirm (" message ") == true)'? Perché non solo 'se (conferma (" messaggio "))'? – Kezzer

+0

Ragazzi, avete ragione. Questo è ancora molto presto codice "veloce e sporco". Il contenuto di ritorno ("Successo") nel controller non era per la visualizzazione. Solo qualcosa per far sapere allo javascript che ha avuto successo. Se qualcuno ha suggerimenti per modi migliori per verificare se un post ajax ha successo fammelo sapere. Ho aggiornato un po 'il codice di esempio per riflettere questi elementi. –

2

Chad Myers ha un good article su questo.

Anche one da Dino Esposito.

+0

Dino sembra abbastanza informativo e completo. Dovrò leggerlo meglio in seguito, comunque. – Kezzer

3

Ho appena finito di guardare un video su alcuni modelli che è possibile ottenere per ASP.NET MVC con Subsonic. Anche se non l'ho ancora implementato o addirittura provato, sembra incredibile! Dai uno sguardo allo here.


non sono sicuro se questa è un'opzione fattibile per la vostra o no, ma di recente abbiamo avuto un bisogno simile al tuo e rilasciare la nostra applicazione primaria come un'applicazione ASP.NET MVC (utilizzando jQgrid) e poi un'applicazione Web Form ASP.NET secondaria per le nostre funzioni di amministrazione che utilizzano dati dinamici. Questo ha funzionato molto bene e ci ha risparmiato un sacco di tempo.

Sembra anche che DynamicData and MVC si uniranno in alcune delle prossime versioni.

Altro lettura ...
* David Hayden
* rbqsoft
* Sharp Architecture Wiki

0

Se anche voi volete buttare la finestra di dialogo jQuery per il partito, questo Ricardo Covo post fa un buon lavoro

enter image description here