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
,如第二个示例所示。