Domanda

Visto che il nostro team gestisce una Intranet che ha client utenti garantiti per avere javascript abilitato, sappiamo che possiamo intervenire e iniziare a usare jQuery più " completamente " ;. Il nostro sistema è molto grande, quindi anche se utilizziamo aree nella nostra applicazione ASP.NET MVC, la mole di pagine da aggiungere, modificare, eliminare e visualizzare set 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, ciò significa che ci sono un totale di 60 pagine. Ora immagina che ci siano venti sottosistemi per area, quindi una singola area avrebbe 20 * 60 pagine e abbiamo circa 15 aree sulla nostra Intranet. Hai capito, è enorme.

Passando al mio punto reale, voglio ridurlo utilizzando le funzionalità jQuery di avere una tabella di dati su una pagina, colpendo " elimina " e mi dà una finestra di dialogo di eliminazione con un pulsante di conferma che invierà quindi il modulo, reindirizzerà all'azione corretta e farà il lavoro per me. Ora ho bisogno di una guida nei seguenti settori:

  1. Se volessi cancellare senza postare di nuovo usando ASP.NET MVC, qual è il processo per farlo? Ciò include premere il tasto Elimina, spegnerlo e verificare che sia in grado di eliminare (le relazioni FK devono essere gestite nel modo corretto), quindi se è possibile eliminarlo e rimuovere la riga dalla tabella nella vista, il tutto senza aggiornare la pagina.
  2. Come posso chiamare l'azione di eliminazione da un processo asincrono usando jQuery? È saggio farlo? Di solito usiamo Html.ActionLink . Dovrei avvolgerlo in un modulo?
  3. Lo stesso vale per la modifica e l'aggiornamento, di nuovo, qual è il modo migliore per farlo?

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

È stato utile?

Soluzione

Sto lavorando a un progetto che utilizza collegamenti per attivare azioni di eliminazione tramite AJAX POST (nessun 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 controller è semplicemente in /Controllers/SectionController.cs. Accetta solo POST come qualsiasi azione che cambi 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");
    }

Altri suggerimenti

Ho appena finito di guardare un video su alcuni modelli che puoi ottenere per ASP.NET MVC con Subsonic. Anche se non l'ho ancora implementato o addirittura provato, sembra incredibile! Dai un'occhiata qui .


Non sono sicuro che si tratti di un'opzione fattibile per te o no, ma recentemente abbiamo avuto un'esigenza simile alla tua e rilasciamo la nostra applicazione principale come applicazione ASP.NET MVC (usando jQgrid ) e quindi un'applicazione ASP.NET Web Form secondaria per le nostre funzionalità di amministrazione utilizzando Dynamic Data. Questo ha funzionato molto bene e ci ha fatto risparmiare un sacco di tempo.

Sembra anche DynamicData e MVC si riuniranno in alcune delle prossime uscite.

Altre letture ...
* David Hayden
* rbqsoft
* Wiki Sharp Architecture

Chad Myers ha un buon articolo su questo.

Anche uno di Dino Esposito.

Se vuoi anche lanciare la finestra di dialogo jQuery alla festa, questo Ricardo Covo post fa un buon lavoro

inserisci qui la descrizione dell'immagine

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top