2010-08-16 4 views
1

나는이 이상한 일이 발생했습니다.PartialView가 아약스 포스트 백 이후에 지워지지 않음

3 개의 필드가있는 PartialView가 있습니다. 내 작업 결과에 jQuery 아약스 게시물을 수행하고 모델이 유효성 검사를 통과하면 레코드를 저장합니다. 또한 모델을 비어있는 것으로 설정하고 뷰를 부분 뷰로 다시 전달합니다.

public ActionResult jQueryAddComment(Comment comment) 
    { 
     if (ModelState.IsValid) 
     { 
      //do stuff here 
      comment = new Comment(); 
     } 

     return PartialView("AddNewComment", comment); 
    } 

페이지로 돌아 가면 JS가 주석 부분의 내용을 HTML의 부분보기에서 html로 바꿉니다.

function submitComment() { 
     $.post('/Home/jQueryAddComment', { forumItemId: $('#id').val(), owner: $('#owner').val(), text: tinyMCE.get('text').getContent(), emailAddress: $('#emailAddress').val() }, function (result) { 
      alert(result); 
      $('.AddNewComment').html(result); 
     });    
    } 

그러나 페이지가 렌더링 될 때 값이 다시 위치합니다. 빈 모델이 뷰에 전달되는 것을 볼 수 있습니다. 그렇다면 왜 이전 값이 여전히 존재합니까?

컨트롤러의 부분보기에 빈 개체를 전달하더라도 경고는 값을 표시합니다.

편집

나는 오류뿐만 아니라 성공적으로 요청을 렌더링하는 동일한 코드를 사용하여 원하는대로 내가 페이지의 JS 내에서 필드를 지울 수 없습니다 언급해야한다.

답변

3

표준 HTML 도우미는 도우미에 전달한 값을 사용하기 전에 값에 대해 ModelState 및 ViewData를 조사합니다.

이 도움이 될 수 있습니다 : How to clear textboxes defined with MVC HTML helpers

+0

? 고마워, 지금 큰 작품. – griegs

+0

@griegs, 도움이되었습니다. 이것이 나에게 일어 났을 때 MVC 소스로 뛰어 들어야했다. – jfar

3

사용 ModelState.Clear()을 같이하는 부분보기로 비어있는 새 모델을 반환하기 전에 : 뭐 어떻게

if (ModelState.IsValid) 
{ 
    //your save logic 

    ModelState.Clear(); 
    comment = new Comment(); 
} 

return PartialView("AddNewComment", comment); 
관련 문제