2012-11-23 3 views
0

워크 플로의 컨텍스트에서만 의미가있는 여러 MVC보기가 있습니다. 예 : 사용자가 다른 페이지의 정보를 제출 한 다음 "성공"만 표시하는 페이지로 리디렉션됩니다.잘못된 ASP MVC 경로를 처리하는 방법

리다이렉트는 GET이므로 사용자가 URL을 조정하여 수동으로 페이지를 탐색하는 것을 막을 수 없습니다.

이 상황에서 어떻게해야합니까? 오류 페이지로 리디렉션하고 빈 페이지를 표시 하시겠습니까?

+0

"ASP.NET MVC"는 단순히 "MVC"로 언급하지 마십시오. 하나는 프레임 워크이고 다른 하나는 언어에 독립적 인 디자인 패턴입니다. IE 호출 - "인터넷" –

+0

따라서 태그는 ... 제목을 바꿉니다. – Kye

+0

예, 태그를 편집했지만 전체 질문을 다시 쓸 필요가 없습니다. –

답변

1

내 생각에 성공 정보보기에는 브라우저 URL에서 제공되지 않기 때문에 라우트가 없어야합니다. 우리의 프로젝트에서 우리는 일반적으로, 예를 action.for 게시물에서 직접

[HttpPost] 
    public ActionResult ChangePassword(ChangePasswordModel model) 
    { 
     if (ModelState.IsValid) 
     { 

      bool changePasswordSucceeded; 
      try 
      { 
       MembershipUser currentUser = Membership.GetUser(User.Identity.Name, userIsOnline: true); 
       changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword); 
      } 
      catch (Exception) 
      { 
       changePasswordSucceeded = false; 
      } 

      if (changePasswordSucceeded) 
      { 
       var infoModel = new AnyInfoModel(); 
       return View("ChangePasswordSuccess", infoModel); // This is not redirected, but success shown in the current route url. 
      } 
      else 
      { 
       ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); 
      } 
     } 
     return View(model); 
    } 

을 성공 뷰를 돌려 그러나 이것은 사용자가 실수로 자신에게 브라우저를 F5 버튼을 누르면 경우,이 양식을 다시 게시하려고합니다, 또한 단점이있다 .

관련 문제