2013-04-12 46 views
0

一個簡單的網站有4個視圖(PersonalInfo,PostOffice,OrderDetails,評論)。所有視圖都強制鍵入名爲Information的模型。我需要做的是以下幾點:保存到Sesssion和按鈕點擊重定向

  • 當我點擊PersonalInfo視圖Next按鈕,我需要一些數據存儲到會話
  • 在那之後,我必須重定向到下一個景,訂單明細

下面是我如何試圖解決問題的一個例子,但它不工作

控制器:

public ActionResult PersonalInfo(string button, Models.Information FirstName, Models.Information LastName) 
    { 
     if (button == "Next") 
     { 
      HttpContext.Session["FirstName"] = FirstName; 
      HttpContext.Session["LastName"] = LastName; 

      return RedirectToAction("PostOffice", "Home"); 
     } 
     else if (button == "Back") 
     { 
      return RedirectToAction("OrderDetails", "Home"); 
     } 
     return View(); 
    } 

按鈕視圖:

<div> 
<button name="button" value="Next">Next</button> 
<button name="button" value="Back">Back</button></div> 

模型屬性:

//Firstname validation 
    [Required(ErrorMessage = "Required field.")] 
    [Display(Name = "First name:")] 
    [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only.")] 
    public string FirstName { get; set; } 

    //Lastname validation 
    [Required(ErrorMessage = "Required field.")] 
    [Display(Name = "Last name:")] 
    [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only.")] 
    public string LastName { get; set; } 
+1

** **如何不起作用? – SLaks

+0

無論我點擊哪個按鈕,都不會發生重定向。我不確定在會話期間是否存儲了某些內容。 – cvenko

+0

而且所有驗證字段都標有紅色,即使我第一次訪問該網站並且不輸入任何內容。 – cvenko

回答

1

這聽起來像你甚至沒有產生一個請求到你PersonalInfo行動。

讓你的按鈕提交按鈕,而不是

<input type="submit" name="button" value="Prev" /> 
<input type="submit" name="button" value="Next" /> 

而且我假設你的表單動作是PersonalInfo

在你的控制器動作用的,而不是TempDataSession傳遞信息到重定向操作,以便數據只保留下一個請求。

TempData["FirstName"] = FirstName; 
TempData["LastName"] = LastName; 

最後,multi-step registration process issues in asp.net mvc (splitted viewmodels, single model)可以幫助你,因爲你在做輯陣步表單處理。

+0

我會使用TempData,但我的任務需要使用Session。我只能在表單處理的最後一步使用TempData,我在一個視圖中顯示所有信息。除此之外,還有很多有用的信息。謝謝。 – cvenko