2014-05-15 25 views
3

嗨,我正在MVC3中開發一個應用程序。我被困在一個地方。每當控制轉到IIndex1動作時其參數值變爲0.但它應該與IIndex動作參數中的值相同。我使用過Session,ViewBag,ViewData,但我的問題仍然存在。請建議我。如何將值從一個動作傳遞到具有相同控制器的另一個動作

 public ActionResult GetMDN(string msisdn) 
     { 
      number = msisdn.Substring(0, msisdn.IndexOf('$')); 
      if (number.ToLower() != "unknown" && number.Length == 12) 
      { 
       number = number.Remove(0, 2); 
      } 
      Session["msdresponse"] = number; 
      Session["moptr"] = msisdn.Substring(msisdn.LastIndexOf('$') + 1); 
      number = msisdn; 
      int sngid=int.Parse(ViewData["isongid"].ToString()); 
      return RedirectToAction("IIndex1", new { iid = sngid }); 
     } 

     public ActionResult IIndex(int id) 
     { 
      ViewBag.isongid = id; 
      ViewData["isongid"] = id; 
      Response.Redirect("http:XXXXXXXXXXXXXXXX"); 
      return RedirectToAction("GetMDN"); 
     } 

     public ActionResult IIndex1(int iid) 
     { 

     } 
+0

是這段代碼不適合你嗎? –

+0

不.....這就是爲什麼我在這裏發佈。主要問題是,當控件從GetMDN動作傳遞到IIndex1動作時,Int iid hase的參數變爲0.但它應該與IIndex動作參數中的任何值相同 –

回答

15

您可以使用TempData.You能之間傳遞的每個數據類型的行動,無論他們是在同一個控制器或沒有。你的代碼應該是這樣的:

public ActionResult GetMDN(string msisdn) 
    { 
     int sngid=10; 

     TempData["ID"] = sngid; 

     return RedirectToAction("IIndex"); 
    } 

    public ActionResult IIndex() 
    { 

     int id = Convert.ToInt32(TempData["ID"]);// id will be 10; 
    } 
相關問題