• 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();  
  • 相关阅读:
    AI图形算法的应用之一:通过图片模板对比发现油田漏油
    基于GPS定位和人脸识别的作业识别管理系统
    windows平板的开发和选型
    windows系统和IE的兼容性问题
    ASP.NET写的一个博客系统
    Android Studio3.2.1升级刨坑记录
    C#怎样链接mysql数据库
    学习进度条博客
    期末总结
    【操作系统】实验四 主存空间的分配和回收
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6145125.html
Copyright © 2020-2023  润新知