2012-02-01 2 views
1

부분보기가 있습니다. PRG 패턴을 사용하여이 양식을 게시합니다. AjaxHelper를 사용하여 양식을 만듭니다. 자바 스크립트 없이도이 양식이 필요합니다. 문제는 모델 유효성 검사가 실패하면 URL이 항상 내 부분보기로 변경된다는 것입니다.부분 뷰 유효성 검사 (JavaScript없이)

public ActionResult PostForm(PostFormModel postFormModel) 
{ 
    if (ModelState.IsValid) 
    { 
     return RedirectToAction("SomewhereElse"); 
    } 
    else 
    { 
     if (Request.IsAjaxRequest()) 
     { 
      return PartialView("_PostForm") 
     } 
     else 
     { 
      // What do I do here? 
     } 
    } 
} 

는 여기에 내가 시도 내용은 다음과 같습니다

return PartialView("_PostForm", postFormModel); 

이 단지 부분 뷰를 렌더링하고 부모의 물건을 포함하지 않습니다.

return View("Index", new ParentModel() { PostFormModel = postFormModel }); 

실제로 올바른 결과가 생성됩니다. 상위보기를 표시하지만 URL 부분은 http://localhost:22485/Controller/PostForm입니다! 나는 이것이 해결책에 정말로 가깝다고 느낀다. 지금 뭐야?

+0

왜 PartialView를 반환합니까 ("_ PostForm", postFormModel); ' 방법 본문에 간다? 잘못 인쇄 된거야? –

+0

네, 죄송합니다. 수정 된 서식. – OpticalDelusion

답변

0

URL을 변경하려면 PRG 패턴을 사용하여 다른 작업으로 리디렉션해야합니다.

postModelService.Save(postFormModel); //to Session or to DB 
return RedirectToAction("Parent"); 

새로운 동작은 다음과 같아야합니다 : 대신 '? // 여기합니까 무엇'의 다음 코드를 삽입

public ActionResult Parent() 
{ 
    var postFormModel = postModelService.Load(); 
    return View("Index", new ParentModel() { PostFormModel = postFormModel }); 
} 

는 도움이되기를 바랍니다.

관련 문제