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();  
原文地址:https://www.cnblogs.com/amylis_chen/p/6145125.html