2011-09-25 81 views
0

我打電話給另一個控制器和操作方法在這裏呼叫控制器和操作方法,並通過模型值

[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

回答

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... 
} 
1

你可以將它們作爲查詢字符串參數:

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