2010-03-03 4 views
2

먼저 만들고, 내가 Asp.Net MVC 2 RC 2.Asp.Net MVC 2 -와 RenderAction 목록

내가하고 싶은 것은 댓글을 추가 할 수있는 코멘트 목록보기와이보기보다하는 것입니다 사용 (유효성 검사 포함). 예를 들어, stackoverflow에 주석을 추가 할 때와 같은 것입니다. 예외적으로 내 페이지가 자바 스크립트 사용 여부에 관계없이 작동해야합니다.

그래서이 문제를 해결하기 위해 새로운 RenderAction을 사용하고 부분적으로 내 문제를 해결했습니다. RenderAction을 사용하여 추가 컨트롤 usercontrol을 호출하는 내 목록보기가 있습니다.

유효성 검사가 작동합니다. 내 문제는 그것이 유효한 주석을 추가하려고 할 때 발생합니다. 페이지가 올바르게 새로 고쳐지지 않았습니다. 내가 데이터베이스에 들어 왔을 때 내 의견이 추가되었지만 내 목록보기에서 새로 고쳐지지 않았으며 덧글 형식이 분명하지 않습니다.

워크 플로 렌더링 방식 때문이라고 생각합니다.

누군가가 이것에 대해 예 또는 블로그를 가지고 어쩌면 경우, 그것은 나를 얻을하는 데 도움이 될 수있어 그것은 바로 ... 내 의견의 하단에

/List.aspx 코멘트에서

<% Html.RenderAction("Create", "Comment"); %> 

/Create.ascx

<% using (Html.BeginForm(
     ViewContext.ParentActionViewContext.RouteData 
      .Values["action"].ToString(), 
     ViewContext.ParentActionViewContext.RouteData 
      .Values["controller"].ToString(), 
     FormMethod.Post, new { id = "createForm" })){ %> 

답변

2

ViewContext.ParentActionViewContext와 관련된 작은 해킹으로 부모보기를 강제로 새로 고칠 수 있습니다.

public ActionResult Create(Comment comment) 
{ 
    ... 
    if (isValid) // Comment entered in form is valid 
    { 
     ControllerContext.ParentActionViewContext.ViewData["SuccessfullCreate"] = true; 
    } 
    ... 
} 

그리고 당신의 의견에

/List.aspx 페이지 (보기) : 당신의 CommentController 클래스에서

자식 조치는 "말"입니다

<% Html.RenderAction("Create", "Comment"); %> 
<% 
    if (ViewContext.ViewData["SuccessfulCreate"] != null) 
    { 
     string action = ViewContext.RouteData.Values["action"].ToString(); 
     string controller = ViewContext.RouteData.Values["controller"].ToString(); 
     string url = "/" + controller + "/" + action; 

     Response.Redirect(url); 
    } 
%> 

그러니까 기본적으로, 무슨 일이의 것이된다 부모의 ViewData를 사용하여 자체를 새로 고치는 부모 작업

일종의 해킹이지만 일을 처리하는 데는 문제가 없습니다.