呼叫控制器和操作方法,并通过模型值
问题描述:
我打电话给另一个控制器和操作方法在这里呼叫控制器和操作方法,并通过模型值
[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
答
您可以使用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...
}
答
你可以将它们作为查询字符串参数:
public ActionResult Index(LoginModel loginModel)
{
...
}
:
return RedirectToAction(
"index",
"premium",
new {
id = loginModel.Id,
username = loginModel.Username,
}
);
和index
行动premium
控制器内另一种可能性是使用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
控制器的index
行动中:
public ActionResult Index()
{
var loginModel = TempData["loginModel"] as LoginModel;
...
}
@drain:我们也可以在这里使用ViewData来传递值... –
@ patel.milanb,不,我们不能在这里使用ViewData。有一个重定向。除此之外,我会建议不要使用ViewData。 –
它的工作原理,但网址看起来像这样http:// localhost:61852/premium?UserName = ronald&Password = 123456我该如何删除它? – WantIt