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

Asp.net mvc 调用控制器和操作方法并传递模型值,asp.net-mvc,asp.net-mvc-3,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"); }

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

    [HttpPost]
    public ActionResult Index(LoginModel loginModel)
    {
        if (ModelState.IsValid)
        { some lines of code . bla bla bla
          return RedirectToAction("indexaction","premiumcontroller");
        }
    }
现在,将执行premiumcontroller的索引操作

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


我正在使用asp.net mvc 3。

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

return RedirectToAction(
    "index",
    "premium", 
    new {
        id = loginModel.Id,
        username = loginModel.Username,
    }
);
premium
控制器的
索引
操作中:

public ActionResult Index(LoginModel loginModel)
{
    ...
}
public ActionResult Index()
{
    var loginModel = TempData["loginModel"] as 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");
    }
    ...
}
premium
控制器的
索引
操作中:

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

您可以使用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...
}

@patel.milanb,不,我们不能在这里使用ViewData。有一个重定向。除此之外,我建议不要使用ViewData.it,但是url看起来像这样,我如何删除它?@user963499,你不能删除它。如果删除它,您将无法再在索引操作中获取任何数据。或者,您可以将LoginModel存储到数据库中,然后在重定向时只发送查询字符串中的id:return
RedirectToAction(“index”,“premium”,new{id=someId})。现在url将如下所示:
localhost:61852/premium?id=1234
,在索引操作中,您将使用此id从数据库中取回模型。或者使用
TempData
,如第二个示例所示。