Rendering vista parziale in MVC

2

Non sono così familiare con le viste parziali. La ragione è che non ho davvero le basi di Jquery / JS / Ajax. Ma recentemente ho trovato attraverso alcuni post di SO che una vista parziale può essere resa usando AJAX Unobtrusive. Il metodo nel post sembra essere davvero semplice usando i metodi di Ajax Helper.

Ma mi sono imbattuto in molti post simili che chiedevano aiuto per il rendering della vista parziale. Ma la maggior parte ha suggerito di usare gli script per renderizzare lo stesso.

Qual è la ragione per cui le persone non hanno mai suggerito AJAX non invadente. (Nel mio caso non ho mai capito bene usando UnoAffrudente AJAX, ma credo fermamente che non sia il problema di UnoAffrudente Ajax, ma mio).

Sto cercando suggerimenti per il rendering di una vista parziale. Ho un progetto da completare in un mese. Preferirei che qualcuno suggerisse alcuni metodi semplici per portare a termine il mio compito.

    
posta Vini 06.10.2015 - 13:29
fonte

1 risposta

3

Ci sono due volte quando vuoi rendere una vista parziale:

  1. Sincronicamente, come parte del rendering di una vista più grande

    es. la vista che viene chiamata quando si esegue il rendering / Widget / Dettagli / potrebbe avere il codice Rasoio simile a questo

    &ltdiv class="subwidget">
      @Html.Partial("_Subwidget", Model.Subwidget)
    &lt/div>
    

    Questo renderà quindi il _Subwidget.cshtml e passerà la proprietà Subwidget del Widget della vista corrente. Questo aiuta a scomporre le viste più grandi per renderle più gestibili e ti permette di rendere la vista _Subwidget in altre viste senza duplicare il codice.

  2. In modo asincrono, quando la vista parziale è l'intero contenuto che si desidera restituire chiamando un metodo controller.

    es. la pagina è già sul dispositivo client ma contiene questo codice jQuery

    $.get('/Widgets/Subwidget/300')
    

    Che invia un GET al controller Widget e chiama Subwidget (300). L'azione di Subwiget non vuole includere alcun layout e altre cose, vuole solo restituire dati nudi (che potrebbero essere un frammento HTML, JSON o anche solo una stringa).

    L'azione di Subwiget potrebbe essere simile a questa

    public ActionResult Subwidget(int Id)
    {
    var subwidget = _widgetGateway.Subwidget(Id);
    return PartialView("_Subwidget", subwidget);
    }
    

    Dipende dal codice javascript sulla pagina per affrontarlo a quel punto.

È importante tenere presente che una vista parziale è solo il risultato che viene inviato al browser. Le tue azioni sono ancora in grado di eseguire tutte le azioni che un'azione di controller standard potrebbe eseguire. Se vuoi accettare i dati sotto forma di POST, PUT o DELETE puoi anche lavorare nella tua azione:

[HttpPost]
public ActionResult SubmitSubwidget(Subwiget sub)
{
  _widgetGateway.Save(sub);      
  return PartialView("_Subwidget", sub);
}

In realtà, non devi nemmeno restituire alcun contenuto al browser. Se vuoi solo sapere se la chiamata è riuscita, puoi semplicemente inviare il codice di stato HTTP.

[HttpPost]
public ActionResult SubmitSubwidget(Subwiget sub)
{
  if(_widgetGateway.Save(sub))
    return new HttpStatusCodeResult(200, "Submitted");
  else
    return new HttpStatusCodeResult(500, "Submission failed");
}
    
risposta data 06.10.2015 - 14:22
fonte

Leggi altre domande sui tag