调用控制器和操作方法并传递模型值

时间:2011-09-25 10:11:06

标签: asp.net-mvc asp.net-mvc-3

我在这里调用另一个控制器和动作方法

    [HttpPost]
    public ActionResult Index(LoginModel loginModel)
    {
        if (ModelState.IsValid)
        { some lines of code . bla bla bla
          return RedirectToAction("indexaction","premiumcontroller");
        }
    }

现在,会发生什么是现在执行premiumcontroller的indexaction。

如何将loginmodel(或loginmodel对象)的值传递给premiumcontroller?我想不出来。感谢。

我正在使用asp.net mvc 3。

2 个答案:

答案 0 :(得分:1)

您可以将它们作为查询字符串参数传递:

return RedirectToAction(
    "index",
    "premium", 
    new {
        id = loginModel.Id,
        username = loginModel.Username,
    }
);

并在index控制器的premium操作内:

public ActionResult Index(LoginModel loginModel)
{
    ...
}

另一种可能性是使用TempData:

[HttpPost]
public ActionResult Index(LoginModel loginModel)
{
    if (ModelState.IsValid)
    { 
        // some lines of code . bla bla bla
        TempData["loginModel"] = loginModel;
        return RedirectToAction("index", "premium");
    }
    ...
}

并在index控制器的premium操作内:

public ActionResult Index()
{
    var loginModel = TempData["loginModel"] as LoginModel;
    ...
}

答案 1 :(得分:1)

您可以使用new关键字传递控制器操作中的值...

return RedirectToAction(
    "indexaction",
    "premium", 
    new {
        Id = loginModel.Id,
        UserName = loginModel.UserName,
        Password = loginModel.Password   
    }
);

在你的另一个控制器中

public ActionResult indexaction(int id, string uName, string paswrd)
{
    // do some logic...
}