ASP.Net MVC Action重定向跳出Controller和Area


1.重定向方法簡介

 

[csharp]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. [HttpPost]  
  2. public ActionResult StudentList( string StudName, string studName, DateTime BirthDay, FormCollection form, string controller,   
  3. string Action, StudentModels student)  
  4. {  
  5.       //其中StudName為aspx頁面中標簽的name屬性(StudName不區分大小寫)  
  6.       //其中BirthDay為頁面中標簽的name屬性(類型可自己指定【需轉換成功才可以】,這里為DateTime)同樣BirthDay不區分大小寫  
  7.       //其中controller,Action為路由信息(controller,Action不區分大小寫)  
  8.       //FormCollection包含了post回來的信息 通過form[]來取值  
  9.       //如果使用強類型綁定 可通過實體回傳值 這里實體為StudentModels  
  10.       //同樣可以使用Request.Form[] Request.QueryString[] Request[] 來取值 不過此Request非WebForm中的Request    
  11. 這里的Request是RequestBase抽象類的實例 WebForm中Request是封裝類 HttpRequest的實例  
  12.            
  13.           
  14.       #region 到要經過執行controller里方法后 顯示出頁面。  
  15.       //return RedirectToAction("Index");//可跳出本controller  
  16.       //return RedirectToRoute(new {controller="Home",action="Index"});//可跳出本controller  
  17.       //Response.Redirect("Index");//只能使用本controller下的方法名稱。返回值為void  
  18.       //return Redirect("Index");//只能使用本controller下的方法名稱。  
  19.       #endregion  
  20.  
  21.  
  22.       #region 直接顯示出對應的頁面 不經過執行controller的方法。  
  23.       //return View("Index");//非本方法  
  24.       //return  View("~/Views/Home/Index.aspx");//這種方法是寫全路徑  
  25.       #endregion  
  26.       return View();  
  27. }  



 

2.跳出Controller和Area

  在上面的代碼中,使用RedirectToRoute(new { contoller="Home", action="Index" })方法可以跳出控制器,訪問其他控制器的action,但是,如果是別的Area里面的控制器Action呢?能不能訪問呢?答案是:可以。

  這樣寫就可以:RedirectToRoute(new { contoller="Home", action="Index" , area="MyArea"})。

3.傳遞參數

  如果要傳遞參數應該怎么寫?

  方法一:

  假設目標Controller里面action參數列表為簡單類型,例如:Index(stringname),那么上面的方法可以這樣寫:RedirectToRoute(new { controller="Home", action="Index", area="MyArea", name="Argo"})。但是這種方法貌似只能傳遞基本類型,對於自定義的Class或者Model,不能傳遞。

  方法二:

[csharp]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. 通過TempData傳遞:  
  2. //本action中代碼</span>  
  3. this.TempData["name"]="Argo";  
  4. RedirectToRoute(new { contoller="Home", action="Index" , area="MyArea"});  
  5. //目標action中代碼</span>  
  6. string name=TempData["name"].ToString();  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM