2014-07-16 202 views
1

我需要將一個視圖模型從一個控制器傳遞到另一個控制器。我用下面的語句。將模型從一個控制器傳遞到另一個控制器

return RedirectToAction("FillNewSession", "Account", new { LoginResult = loginResult }); 

LoginResult是模型「UserLoginProperties」的一個對象。下面是FillNewSession控制器。

public ActionResult FillNewSession(UserLoginProperties LoginResult) 
    { 
     Session["UserID"] = LoginResult.UserID.ToString(); 
     Session["LoginID"] = LoginResult.LoginID; 
     Session["UserFullName"] = LoginResult.UserFullName; 
     Session["UserTypeID"] = LoginResult.UserTypeID; 
     Session["UserRefNo"] = LoginResult.UserRefNo; 
     Session["UserNRIC"] = LoginResult.UserNRIC; 

     return Redirect("~/index.aspx"); 
    } 

問題是當執行「FillNewSession」控制器時,傳遞的參數「LoginResult」爲空。

請幫忙。

+0

[傳遞模型和參數與RedirectToAction]的可能重複(http://stackoverflow.com/questions/16468061/passing-model-and-parameter-with-redirecttoaction) – markpsmith

回答

0

如果要通過重定向調用傳遞對象,則需要逐個發送對象的所有屬性,如下所示。你不能僅僅傳遞對象。

public class UserLoginProperties 
{ 
    public string UserID { get; set; } 
    public string LoginID { get; set; } 
} 
public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     var prop = new UserLoginProperties(){ LoginID = "123", UserID = "abc"}; 
     return RedirectToAction("OtherAction", new { UserID=prop.UserID, LoginID=prop.LoginID }); 
    } 

    public ActionResult OtherAction(UserLoginProperties prop) 
    { 
     // do whatever you want with it here 
    } 
} 
+0

@Ohlin ......是的理解。這裏的問題是我在做重定向之前做了一個Session.Abandon。所以TempData在使用Session時會被清除。 我在這裏的場景是我需要發佈一個新的會話ID,一旦用戶已經登錄,以防止會話固定,因此,我正在做一個Session.Abandon之前分配值的會話。 – vsriganan

+0

@vsriganan好的,我誤解了你的問題。我用新的解決方案更新了我的答案。 – Ohlin

+0

感謝兄弟...你是一個拯救生命的人......將你的答案標記爲正確...... – vsriganan

相關問題