2016-06-09 165 views
1

在我AccountController類我有這樣的:重新加載頁面,並顯示在頁面的新視圖

public ActionResult ForgotPassword(ForgotPasswordViewModel fpModel = null) 
    { 
     string method = HttpContext.Request.HttpMethod; 

     if (method == "GET") 
     { 
      ViewBag.Status = "CREATE_TASK"; 
      ForgotPasswordViewModel model = this.ForgotPasswordManager.LoadForgotPasswordSettings(); 

      if (model != null && !string.IsNullOrWhiteSpace(model.ForgotPasswordMethod) && model.ForgotPasswordMethod.Trim().ToUpper() == "TASKS") 
       return View(model); 
     } 

     if (method == "POST") 
     { 
      ViewBag.Status = "TASK_CREATED"; 
      this.CreateTask(fpModel); 
     } 

     return RedirectToAction("ForgotPassword"); // Prob this is wrong? 
    } 

然後在我看來,我有這樣的:

@model Models.Account.ForgotPasswordViewModel 

<div class="container" style="background-color: #f6f6f6"> 

    @if (ViewBag.Status == "CREATE_TASK") 
    { 
     <div class="form-group"> 
      <h4 id="SearchWelcomeHeader">Password Request</h4> 
     </div> 

     using (Html.BeginForm("ForgotPassword", "Account", FormMethod.Post, new { role = "form", @class = "form-horizontal" })) 
     { 
      // some textboxes to fill up a password request form go in here 

      <button id="submit" class="btn btn-primary" style="width: 20%">Submit</button> 
      <button id="cancel" class="btn btn-secondary" style="width: 20%">Cancel</button> 
     } 
    } 

    @if (ViewBag.Status == "TASK_CREATED") 
    { 
     <p> Good Job ! You requested a new password! </p> 
    } 

</div>  

那麼,我想完成是這樣的:首先他們去那個頁面,填寫他們的密碼申請表並且他們提交,所以現在它是一個POST。所以在POST上,我使用代碼中的this.CreateTask(fpModel);創建了一些DB中的內容。但是在此之後我想重新加載頁面,並顯示新的東西就好了,我會添加一個確定按鈕後出現過,但目前這樣的事情「的成功,我們提交您的申請!」:

@if (ViewBag.Status == "TASK_CREATED") 
{ 
    <p> Good Job ! You requested a new password! </p> 
    ALSO A BUTTON, Will Add Later 
} 

但是這並未」 t提交後,它會用「GET」請求重新加載頁面,然後再次顯示錶單。我希望他們現在看到成功消息的頁面的其他部分。

回答

1

RedirectToAction方法返回一個HTTP 302響應於所述瀏覽器,這會導致瀏覽器進行GET請求到指定的動作

所以,修改return RedirectToAction("ForgotPassword");return View(fpModel);

+1

哇,優異。 ..你今天救了我:) – Bohn

+0

你能稍微解釋一下,「返回視圖(fpmodel)是不同的嗎?它的工作原理,我現在想了解更多 – Bohn

+1

'返回視圖(模型)'使用視圖模型,該方法通過 「ViewResult」對象是ASP.NET MVC框架,它調用 對象的ExecuteResult方法。 –

相關問題