• 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();  
  • 相关阅读:
    开发工具 编程风格
    WinServer2003 Computer Browser服务每隔一段时间自动关闭问题解决方法
    VSS 无法与服务器建立连接 以及与服务器断开连接
    VSS 部署
    db2 服务器启动项目
    Sublime Text 2 编辑器实用技巧
    WdatePicker日历控件使用方法
    02.微博账号注册
    01.微博三方登录原理讲解
    3.celery发送短信接口
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6145125.html
Copyright © 2020-2023  润新知