将模型从一个控制器传递到另一个控制器

时间:2014-07-16 09:11:52

标签: asp.net-mvc model-view-controller

我需要将View Model从一个控制器传递给另一个控制器。我使用了以下声明。

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" controller执行传递的参数" LoginResult"是空的。

请帮助。

1 个答案:

答案 0 :(得分: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
    }
}