.net MVC RenderPartial renders information that is not in the model

Posted by Andreas on Stack Overflow See other posts from Stack Overflow or by Andreas
Published on 2010-06-16T14:05:21Z Indexed on 2010/06/16 18:52 UTC
Read the original article Hit count: 460

Filed under:

Hi,

I have a usercontrol that is rendering a list of items. Each row contains a unique id in a hidden field, a text and a delete button. When clicking on the delete button I use jquery ajax to call the controller method DeleteCA (seen below). DeleteCA returns a new list of items that replaces the old list.

[HttpPost]
public PartialViewResult DeleteCA(CAsViewModel CAs, Guid CAIdToDelete)
{
    int indexToRemove = CAs.CAList.IndexOf(CAs.CAList.Single(m => m.Id == CAIdToDelete));
    CAs.CAList.RemoveAt(indexToRemove);
    return PartialView("EditorTemplates/CAs", CAs);
}

I have checked that DeleteCA is really removing the correct item. The modified list of CAs passed to PartialView no longer contains the deleted item.

Something weird happens when the partial view is rendered. The number of items in the list is reduced but it is always the last element that is removed from the list. The rendered items does not correspond to the items in the list/model sent to PartialView.

In the usercontrol file (ascx) I'm using both Model.CAList and lambda expression m => m.CAList.

How is it possible for the usercontrol to render stuff that is not in the model sent to PartialView?

Thanx Andreas

© Stack Overflow or respective owner

Related posts about asp.net-mvc