2011-12-28 11 views
6

Quiero actualizar la vista parcial cada vez que se hace clic en ActionLink. Estoy pasando el mismo modelo a la vista parcial como la vista principal. El problema es que la vista parcial no se está actualizando. No estoy seguro de si estoy en el camino correcto.MVC Ajax update partial view

Ver:

@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> 

parcial:

@model MyPoll.Models.Poll 

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

acción del controlador:

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

    return View(poll); 
} 

Los scripts de una Referenciado también:

<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

son 'y 'MicrosoftAjax.js' MicrosoftMvcAjax.js' hace referencia? Y jQuery también? –

+0

@david, sí lo son. – mishap

+0

¿realizó la depuración básica: compruebe si tiene algún error js, si ve que se realiza la solicitud, si la acción del controlador recibe las solicitudes, si los datos que se devuelven se actualizan realmente? –

Respuesta

6

fijo:

en acción:

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

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

Vaya, eso es una especie de cojera. ¿Alguna explicación sobre por qué necesitamos la separación? ¿Recibió algún mensaje de error? ¿Cómo resolviste esto? – vbullinger

+0

@vbullinger, no recuerdo qué error fue ese, pero tuve que devolver PartialView en lugar de View para solucionar el problema. – mishap

+0

Gracias, eso también me ayudó. El mismo error, pero no pude entender por qué no estaba funcionando. –

0

Probablemente es porque estás cargando jquery al último. El otro js depende de jquery.