2017-10-02 18 views
0

MVC 응용 프로그램이 있습니다.MVC, 다른보기로 리디렉션되는 동안 MVC, 임시 (5 초) 메시지 표시 방법을 표시하는 방법

부분보기 _B를 렌더링하는보기 A가 있습니다. 보기 A는 부분보기 _B하지 보여줄 때 정의하는 논리가 : 나는 내가 5 초 동안 div 리디렉션 표시하는 데 도움이 다음 MainPage로 리디렉션됩니다 솔루션을 찾고 있어요

@if (!(bool)ViewData["PasswordChanged"]) 
{ 
    <div style="margin-top:20px;"> 

     <div> 
      @Html.Partial("~/Views/_B.cshtml"); 
     </div> 

    </div> 
} 
else 
{ 
    <div id="redirect" style="margin-top:20px;"> 

     <div style="color:green;"> 
      @ViewBag.Message 
     </div> 
     <div> 
      Please wait while you are redirected... 
     </div>  
    </div> 

View .

다음은 양식 제출시 호출되는 메소드입니다. 이 방법에서는 아마도 withRedirect 플래그가 true 일 때 어떤 종류의 논리가 필요합니다. 현재는 MainPage으로 리디렉션 중이지만 Redirection Success 메시지를 5 초 동안 표시해야합니다.

[HttpPost] 
public ActionResult Index(ChangePasswordModel model, string returnUrl*/) 
{ 
    ViewData["PasswordChanged"] = false; 
    bool withRedirect = Convert.ToBoolean(Session["WithRedirect"].ToString()); 
    if (ModelState.IsValid) 
    { 
     string currentPassword = model.CurrentPassword; 
     string newPassword = model.NewPassword; 
     string confirmPassword = model.ConfirmPassword; 

     if (ChangePasswordModel.IsPasswordValid(newPassword)) 
     { 
      try 
      { 
       ChangePasswordModel cpm = ChangePasswordModel.ChangePassword(model); 
       if (cpm.SuccessMessage.Length > 0) 
       { 
        ViewData["PasswordChanged"] = true; 
        ViewBag.Message = cpm.SuccessMessage;       
        if (withRedirect) 
        { 
         return Redirect(returnUrl ?? Url.Action("Index", "MainPage")); 
        } 
       } 
       else 
       { 
        ModelState.AddModelError("", cpm.FailMessage); 
       } 

      } 
      catch(Exception error) 
      { 
       ModelState.AddModelError("", error.Message); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "New password does not meet minimum requirements"); 
     } 
    } 
    if (withRedirect) 
    { 
     return View("ForceChangePassword"); 
    } 
    else 
    { 
     return View("ChangePassword"); 
    }   
} 

가 어떻게 컨트롤러에서 MVC

+1

사용 아약스 양식을 보낼 수 있습니다. 멋진 사용자 경험을 제공하면서 javascript를 사용하여 멋진 메시지를 보여줄 수 있으며'setTimeout'을 사용하여 5 초 후에 리디렉션 – Shyju

+0

타이머를 실행하기 위해 JavaScript를 사용하고'window.location = url' 리디렉션 만하면됩니다. 페이지로드 이벤트에서이 작업을 수행 할 수 있습니다. – Jasen

+0

위와 일치하는 js 리디렉션을 처리하는 데 동의합니다. ajax를 통해 양식을 게시 한 다음 성공 (Shyju가 말하는 것처럼)에서 리디렉션하거나 일반 양식 게시물을 수행 할 수 있고 5 초 동안 반환 페이지가 표시되고 그 페이지에서 js를 사용하여 리디렉션됩니다. – nurdyguy

답변

0

에 그런 일을 할 수 있으며, 부분보기를 렌더링보기로 리디렉션 :

if (withRedirect) 
{ 
    return View("ViewA"); 
} 

하고보기 A의

의를 표시 할 때 "리디렉션"메시지는 우리는 하나

1.

<div style="margin-top:20px;"> 
    <div style="color:green;"> 
     @ViewBag.Message 
    </div> 
    <div> 
     Please wait while you are redirected... 
     <script> 
      window.setTimeout(function() { 
       location.href = "MainPage"; 
      }, 5000); 
     <script> 
    </div> 
</div> 
에 의해 그것을 할 수 있습니다

2.

<div style="margin-top:20px;"> 
    <meta http-equiv="refresh" content="5;url=MainPage"> 
    <div style="color:green;"> 
     @ViewBag.Message 
    </div> 
    <div> 
     Please wait while you are redirected... 
    </div> 
</div>