呼叫控制器和操作方法,并通过模型值

问题描述:

我打电话给另一个控制器和操作方法在这里呼叫控制器和操作方法,并通过模型值

[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; 
    ... 
} 
+0

@drain:我们也可以在这里使用ViewData来传递值... –

+0

@ patel.milanb,不,我们不能在这里使用ViewData。有一个重定向。除此之外,我会建议不要使用ViewData。 –

+0

它的工作原理,但网址看起来像这样http:// localhost:61852/premium?UserName = ronald&Password = 123456我该如何删除它? – WantIt