2011-12-28 44 views
6

Desidero aggiornare la vista parziale ogni volta che si fa clic su ActionLink. Sto passando lo stesso modello alla vista parziale come vista principale. Il problema è che la vista parziale non viene aggiornata. Non sono sicuro se sono sulla buona strada.MVC Vista parziale aggiornamento Ajax

Vista:

@model MyPoll.Models.Poll 

@Ajax.ActionLink("For", "AddPositive", new RouteValueDictionary { {"id", Model.Id }},new AjaxOptions() { UpdateTargetId = "countsDiv" }) 

<div id="countsDiv"> 
    @Html.Partial("Counts", Model) 
</div> 

parziale:

@model MyPoll.Models.Poll 

Positive count : @Model.PositiveCount 
Negative count : @Model.NegativeCount 

azione di controllo:

public ActionResult AddPositive(int id) 
{ 
    Poll poll = db.Polls.Find(id); 
    poll.PositiveCount++; 
    db.SaveChanges(); 

    return View(poll); 
} 

Gli script a re riferimento così:

<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
+0

sono '' MicrosoftAjax.js' e MicrosoftMvcAjax.js' fatto riferimento? E anche jQuery? –

+0

@david, sì, lo sono. – mishap

+0

hai eseguito il debug di base: controlla se hai errori js, se vedi la richiesta che viene effettuata, se l'azione del controller riceve le richieste, se i dati che vengono restituiti sono effettivamente aggiornati ?? –

risposta

6

fisso:

In azione:

public **PartialViewResult** AddPositive(int id) 
    { 
     Poll poll = db.Polls.Find(id); 
     poll.PositiveCount++; 
     db.SaveChanges(); 

     return **PartialView**("Counts", poll); 
    } 
+0

Wow, è una specie di zoppo. Qualche spiegazione sul perché abbiamo bisogno della separazione? Hai ricevuto messaggi di errore? Come lo hai capito? – vbullinger

+0

@vbullinger, non ricordo quale errore fosse, ma ho dovuto restituire PartialView invece di View per risolvere il problema. – mishap

+0

Grazie, anche tu mi hai aiutato. Lo stesso errore, ma non sono riuscito a capire perché non funzionasse. –

0

Probabilmente è perché si sta caricando jquery scorso. L'altro js dipende da jquery.

Problemi correlati