2013-02-10 11 views
9

Sono nuovo su .NET mvc.Aggiornamento vista parziale dopo invio Ajax.Beginform

In una vista "DisplayThings" ho qualcosa di simile:

@foreach (var thing in Model) 
{ 
    @Html.Partial("DisplayPartial", thing) 
} 

Nella vista parziale "DisplayPartial" Ho

@using (Ajax.BeginForm("Afunc", new AjaxOptions())) 
{ 
    @Html.EditorFor(model => model.AstringThing) 
    @Html.EditorFor(model => model.AintThing) 

    <input type="submit" name="submit" value="Ajax Post" /> 
} 

Al momento il "Afunc" -Azione salva il modello al database e quindi reindirizza a un'azione del controller per recuperare tutte le "cose" dal database e visualizzare l'intera vista "Displaythings".

La mia domanda è: quando premo uno dei pulsanti di invio (C'è un pulsante di sottomissione per ogni "cosa" in elenco). Voglio solo quella vista parziale per ricaricare/riflettere sul mio cambiamento. Non voglio ricaricare l'intera vista "Display". Come faccio a fare questo? Se restituisco una vista parziale, perdo tutto il resto tranne quella vista parziale.

Se questo è un approccio sbagliato, per favore forniscimi le indicazioni.

Aggiornamento:

sto ancora facendo qualcosa di sbagliato, come ho la vista parziale reso in una nuova pagina. Il mio controller:

public ActionResult Afunc(ThingModel thingmodel) 
{ 
    // do 

    return PartialView("DisplayPartial", thingmodel); 
} 

Ho provato con UpdateTargetId e onSuccess entrambi con lo stesso risultato (una nuova pagina)

risposta

12

Nel AjaxOptions che state semplicemente ora passando come new AjaxOptions è possibile specificare l'elemento di destinazione utilizzando il UpdateTargetId proprietà:

<div id="unique_thing_id"> 
@using (Ajax.BeginForm("Afunc", new AjaxOptions { UpdateTargetId = 'unique_thing_id' })) 
{  
} 
</div> 

Sopra, un contenitore con ID univoco per ogni "cosa" è rappresentato con <div id="unique_thing_id">. Questo sarà sostituito con la risposta della richiesta. Cambia Afunc per rendere solo parziale la "cosa" parziale.

+3

Accetterò la tua risposta dato che hai indicato qualcosa che mi mancava. Tuttavia era solo una delle 2 cose che avevo perso. Un problema comune è dimenticare (dopo aver navigato in rete) per aggiungere questo alla tua pagina di layout: Andreas

+0

@manojlds Ho aperto una nuova domanda, la prego di dare un'occhiata a [questo] (http://stackoverflow.com/questions/30868493/form-reload-but-partialview-cannot-with-ajax-in -mvc? noredirect = 1 # comment49779357_30868493) domanda? –

Problemi correlati