2014-07-16 2 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"매개 변수가 null 인 경우 문제가 발생합니다.

도와주세요.

+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을 수행하는 것입니다. 그래서 그 동안 Session을 사용하면서 TempData가 지워질 것입니다. 내 시나리오는 세션 고정을 방지하기 위해 사용자가 로그인 한 후에 새 세션 ID를 발급해야하므로 세션에 값을 할당하기 전에 Session.Abandon을 수행하고 있습니다. – vsriganan

+0

@vsriganan 네, 질문에 대한 오해가있었습니다. 새로운 솔루션으로 내 대답을 업데이트했습니다. – Ohlin

+0

감사합니다 형제 님 ... 당신은 생명의 은인 ... 올바른 답변을 표시했습니다 ... – vsriganan

관련 문제