2010-06-16 6 views
1

항목 목록을 렌더링하는 usercontrol이 있습니다. 각 행에는 숨겨진 필드, 텍스트 및 삭제 버튼에 고유 한 ID가 있습니다. delete 버튼을 클릭하면 jquery ajax를 사용하여 컨트롤러 메소드 DeleteCA (아래 참조)를 호출합니다. DeleteCA는 이전 목록을 대체하는 항목의 새 목록을 반환합니다.. NET MVC RenderPartial 모델에없는 정보를 렌더링합니다.

[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); 
} 

나는 실제로 DeleteCA가 올바른 항목을 제거하고 있음을 확인했습니다. PartialView로 전달 된 수정 된 CA 목록에는 삭제 된 항목이 더 이상 포함되지 않습니다.

부분보기가 렌더링 될 때 이상한 일이 발생합니다. 목록의 항목 수는 줄어들지 만 항상 목록에서 제거 된 마지막 요소입니다. 렌더링 된 항목은 PartialView로 전송 된 목록/모델의 항목과 일치하지 않습니다.

Usercontrol 파일 (ascx)에서 Model.CAList와 λ 식 m => m.CAList를 모두 사용하고 있습니다.

어떻게 UserControl이 PartialView로 전송 된 모델에없는 것을 렌더링 할 수 있습니까?

고맙습니다 안드레아스

답변

1

ModelState이 문제는 CAs 결합으로 오브젝트가 모델에 더 이상 존재의 진정한 그래서 ModelState이 Attempted Values으로 백그라운드에서이 값을 저장하지, 여기처럼 소리, ModelSate에는 여전히 삭제 된 객체의 값이 있습니다. 다음과 같이 시도해보십시오.

ModelState.Clear(); 

이전 값을 모두 제거하십시오.

+0

아! 고마워 Omar! – Andreas

0

응답이 실제로 무엇인지 확인하십시오. 이렇게하면 서버 측 문제가 있는지 또는 jquery 문제인지 확인할 수 있습니다.

+0

감사합니다. Malcolm. 내가 자바 스크립트에서 콜백 함수를 디버깅하고 그것은 반환 된 HTML 오류가 포함되어 있는지 분명하다. 이는 서버 측 문제입니다. – Andreas

관련 문제