2011-02-03 5 views
0

AddComment()라는 작업에서 ModelState 오류가 발생했다고 가정 해 보겠습니다. AddComment는 자체 뷰가 없으므로 View()를 반환하는 대신 View ("Blog")를 반환해야합니다. RedirectToAction ("Blog")은 ModelState 오류가 발생하지 않기 때문에 사용할 수 없습니다. 문제는 블로그보기가 블로그 모델에 바인딩 된 경우입니다. Blog 데이터를 검색하고 View ("Blog", BlogModel)를 반환하는 Index() 작업이 있다고 가정 해 보겠습니다. BlogModel이 검색된 Index()의 내용을 AddComment() 액션으로 복사해야합니다. 그렇지 않으면 AddComment에서 View ("Blog")를 반환하면 블로그보기가 파싱 될 때 null 예외가 발생합니다. 이것은 동일한 뷰를 사용하는 동작간에 ModelState 오류를 유지하는 유일한 방법입니까? 방금 MVC를 배우기 시작 했으므로 코드를 레이아웃하는 올바른 방법을 배우고 있으므로 저를 계몽하십시오.여러 작업, 동일한보기 및 유효성 검사 오류

[HttpGet] 
    public ActionResult Index() 
    { 
     BlogEntry RecentBlogEntry; 

     //get the most recent blog entry 
     RecentBlogEntry = m_BlogEntryDataService.GetRecentBlogEntry(); 

     return View(RecentBlogEntry); 
    } 

    [HttpPost] 
    public ActionResult AddComment(BlogComment NewComment) 
    { 
     if (ModelState.IsValid) 
      m_CommentDataService.AddComment(NewComment); 

     //get the most recent blog entry - AGAIN 
     return View("Index", m_BlogEntryDataService.GetRecentBlogEntry()); 
    } 

답변

0

코드가 정확합니다. 뷰를 올바르게 다시 표시 할 수 있도록 유효성 검사 오류가있는 경우 가장 최근의 블로그 항목을 다시 가져와야합니다.

+0

그러나 블로그 페이지가 많아지면 색인 작업 코드를 복제하는 많은 작업이 끝납니다. Index()에서 변경해야한다면 다른 모든 액션에서 코드를 변경해야합니다. 그런 다음 또 다른 대안은 내 모델이 요청에서 요청 될 때까지 지속될 viewstate의 시절로 돌아가는 것입니다. 내 컨트롤러에서 모든 논리를 지켜야 할 것입니다! – enamrik