2017-10-02 13 views
0

私はMVCアプリケーションを持っています。MVC、別のビューにリダイレクトされている間に、一時的に(5秒間)メッセージを表示する方法

私は部分的なビュー_BをレンダリングするビューAを持っています。 ビューAではない部分図_Bを表示する際に定義し、ロジックを持っています

@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> 

私は5秒間divをリダイレクト表示するために私を助けた後、メインページにリダイレクトされます解決策を探していますView

以下は、フォーム送信時に呼び出されるメソッドです。この方法では、おそらく、私のwithRedirectフラグが真のときに何らかの種類の論理を持つ必要があります。現在、MainPageにリダイレクトしていますが、Redirection Successメッセージを5秒間表示する必要があります。表示する際に、

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

とビューAで:私は、コントローラ内MVC

+1

フォームを送信するために、AJAXを使用してください。あなたは素敵なユーザーエクスペリエンスを与えながら、javascriptを使って素敵なメッセージを表示でき、 'setTimeout'を使って5秒後にリダイレクトすることができます – Shyju

+0

JavaScriptを使ってタイマーを実行し、リダイレクト' window.location = url'を実行するだけです。ページロードイベントでこれを行うことができます。 – Jasen

+0

私は上記に同意し、jsを使ってリダイレクトを処理します。あなたはajax経由でフォームを投稿し、成功からリダイレクト(Shyjuが言っているように)するか、通常のフォーム投稿を行うことができます。そして、5sのリターンページが表示され、そのページのjsを使ってリダイレクトされます。 – nurdyguy

答えて

0

でそのような何かを行うことができ、部分的なビューをレンダリングビューにリダイレクト方法

[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"); 
    }   
} 

"リダイレクト" メッセージは、我々はどちらか

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> 
関連する問題