首页 > 编程语言 >C#-MVC-内置对象-Request、Response、Session、Cookie、Application、Server

C#-MVC-内置对象-Request、Response、Session、Cookie、Application、Server

时间:2022-11-28 17:22:05浏览次数:67  
标签:return C# Request ActionResult Content Session public

Controllers 文件夹
Controllers 文件夹包含负责处理用户输入和响应的控制类。

MVC 要求所有控制器文件的名称以 “Controller” 结尾。

在下例中,Visual Web Developer 已经创建好了以下文件: HomeController.cs(用于 Home 页面、 About 页面和Contact页面)

 

 

 

MVC映射方式
Web 服务器通常会将进入的 URL 请求直接映射到服务器上的磁盘文件。例如:URL 请求 “http://baidu.com/index.php” 将直接映射到服务器根目录上的文件 “index.php”。

MVC 框架的映射方式有所不同。MVC 将 URL 映射到方法。这些方法在类中被称为"控制器"。

控制器负责处理进入的请求,处理输入,保存数据,并把响应发送回客户端。

例如下图地址栏

 

先由ASP.NET IIS的管道接管,中间键得到地址,会解析出Home和Index两个信息,Home就是Controller名字,Index对应的是方法的名字,这时它会通过反射的方式实例化这个Controller,并且调用这个方法,这都是MVC框架干的事情。

内置对象
调用方法的时候有几个重要的内置对象

Request
Response
Session
Cookie
Application
Server
Request
Request是服务器接收客户端数据

Request.QueryString对应的是get请求,QueryString对应的是get请求的数据

 

namespace WebApplication1.Controllers
{
    public class DemoController : Controller
    {
        // GET: Demo
        public ActionResult Index()
        {
            return Content(Request.QueryString["name"]);
        }
    }
}

 

namespace WebApplication1.Controllers
{
    public class DemoController : Controller
    {
        // GET: Demo
        public ActionResult Index()
        {
            return Content($"{Request.QueryString["name"]}-{Request.QueryString["age"]}-{Request.QueryString["id"]}");
        }
    }
}

 

 

 Request.Form对应的是post请求

public class DemoController : Controller
    {
        public ActionResult PostData()
        {
            return Content(Request.Form["loginname"]);
        }
    }
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form action="/Demo/PostData" method="post">
        <input type="text" name="loginname"" />
        <button>提交</button>
    </form>
</body>
</html>

 

 

 

 Request.Files对应的是post请求的文件(文件上传)

public class DemoController : Controller
    {
        public ActionResult FileData()
        {
            //SaveAs方法需要物理路径
            //Request.MapPath()将虚拟路径转换成物理路径
            Request.Files["file"].SaveAs(Request.MapPath("~/upload/"+Request.Files["file"].FileName));
            return Content("ok");
        }
    }

  

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form action="/Demo/FileData" method="post" enctype="multipart/form-data">
        <input type="file" name="file" />
        <button>提交</button>
    </form>
</body>
</html>

 

 

 

 

 

 或者直接查看

 

 

Response

response是服务器给客户端的结果

Response.Write()向客户端输出内容

public class DemoController : Controller
    {
        public ActionResult ResponseData()
        {
            Response.Write("maria");
            return Content("");
        }
    }

 

 Response.Redirect()重定向

public ActionResult ResponseData()
   {
         Response.Redirect("https://www.baidu.com/");
         return Content("");
    }

Session

Session:会话,数据保存在服务器中 ,存储少量重要数据比如账号
Session是一个键值对
Session的存货时间 20min
Session的销毁 Abandon/Clear

       public ActionResult SessionData()
        {
            Session["user"] = Request.Form["user"];
            return  Content("会话中的数据是:" + Session["user"]);
        }
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form action="/Demo/SessionData" method="post">
    <input type="text" name="user" />
    <button>提交</button>
    </form>
</body>
</html>

 

 

 

 20分钟内所有页面都可以读取Session数据

public ActionResult GetSession()
{
    return Content("当前会话的数据是:" + Session["user"]);
}

 

 换个浏览器,发现两个浏览器的Session数据不共享,Session的值只存储在各自的Session中

 

 安全退出

 public ActionResult ClearSession()
{
      Session.Abandon();
      return Content("当前会话的数据是:" + Session["user"]);
}

Cookie

储存cookie

public ActionResult CookieSave()
{
     Response.Cookies.Add(new HttpCookie("token")
     {
          Value = "abc",
          //时效性
          Expires = DateTime.Now.AddDays(1)
      });
      return Content("ok");
}

 

 

 

 cookie的值可以修改

 

浏览器保存的是更改后的值,获取cookie

 

 public ActionResult CookieGet()
{
     return Content(Request.Cookies["token"].Value);
}

 

 清除cookie

        public ActionResult CookieClear()
        {
            Response.Cookies.Add(new HttpCookie("token")
            {
                Expires = DateTime.Now.AddDays(-1)
            });
            return Content("ok");
        }

 

 

Application

存值和获取值

public ActionResult ApplicationData()
        {
            HttpContext.Application["user"] = "123";
            return Content("ok");
        }
        public ActionResult ApplicationGet()
        {
            return Content(HttpContext.Application["user"].ToString());
        }

 

 

 

 

Server

Server.Transfer() 转发
转发:路径不变,内容发生变化
转发不能转发外站的内容,重定向可以,重定向路径会发生变化

public ActionResult ServerDemo()
        {
            Server.Transfer("~/Demo/ShowDemo");
            return Content("");
        }
        public ActionResult ShowDemo()
        {
            return Content("这是内容");
        }

 

 Server.MapPath() 虚拟路径转物理路径
Server.HtmlEncode()
Server.HtmlDecode()
Server.UrlEncode()
Server.UrlDecode()

标签:return,C#,Request,ActionResult,Content,Session,public
From: https://www.cnblogs.com/123525-m/p/16932744.html

相关文章

  • PC电子功德木鱼,超级全能摸鱼神器这样玩(附神器下载)
    前段时间大家应该都看到过网上有个使用苹果三件套的网友,一边听大悲咒,一边数佛珠,还一边敲木鱼,可谓是电子时代的功德无量~就像下图这样。今天也给我们使用Windows系统的朋......
  • Cookie、Session与Token
    Cookie Cookie是一个http请求首部,当服务端响应头上标记着setCookie时,可以设置此cookie到当前域名下。浏览器端会将此cookie以kv的形式存储到本地文件中Session sess......
  • iOS开发之检测网络链接的实际状态RealReachability
    之前写的项目用了苹果自带的Reachability文件进行网络状态判断,发现判断情况并不是很理想,所以为了解决这个问题,查找了一些资料,来改变旧的判断方式,使用的是一个很好用的、封装......
  • iOS开发之好用的图片选择第三方TZImagePickerController
    最近的项目中涉及到了类似于发布朋友圈的功能,其中就需要上传照片等媒体内容,所以为了方便和效果好看,使用了TZImagePickerController第三方来管理和调用媒体内容,现在就是简单......
  • iOS开发之使用block块进行数据遍历的方法
    看了一篇文章,发现遍历数组、字典中的数据时,除了使用for循环外,还可以使用block块进行操作,瞬间感觉iOS的语言代码确实有点高大上的感觉,下面就简单的介绍一下这个方法。首先是......
  • iOS开发之自定义ActionSheet视图
    有时我们需要用到actionSheet来展示,但是但是往往系统的界面显示很丑或者并不符合UI的要求,所以在这里自定义一个,方便以后使用,后续有时间写一下Swift的开发。自定义ActionShee......
  • Swift基础之实现下拉变大和OC下拉变大上拉缩小Demo
    Swift语言实现下拉变大效果:(上拉缩小效果随后研究......)关键代码:方法一:self.automaticallyAdjustsScrollViewInsets=false;              tableViewW=UI......
  • Swift基础之封装一个WebViewController
    研究了一段时间,总算搞定了这个功能封装,现在给大家分享一下,具体看代码,上面有对应的文字描述,有问题请留言,下载源码,请帮忙点一下star,给点继续分享的动力,谢谢~/**//swift中......
  • 关于Block的使用和5点注意事项
    一、概念首先需要了解的是Block是一个代码块,是一个变量的形式存在的。二、构成了解我们需要在函数中声明block,因为是变量的形式,而且存在静态变量形式类型1: NSString......
  • JAVA-API概述-Scanner类键盘录入数据
    代码一packagecom.itheima.api;importjava.util.Scanner;publicclassDemo1Scanner{/*next():遇到了空格,就不再录入数据了结......