接收客户端在HTTP请求期间发送过来的值(HttpRequestBase/HttpRequestHttpContextBase/HttpConextHttpContext.Current)

Posted Arlar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接收客户端在HTTP请求期间发送过来的值(HttpRequestBase/HttpRequestHttpContextBase/HttpConextHttpContext.Current)相关的知识,希望对你有一定的参考价值。

虽然基本知道Asp.Net MVC程序如何接收来自客户端HTTP的信息,但是关于HTTP的请求流转和数据传递机制有些模糊,今天就来稍作整理吧。

来看看客户端代码:

<form action="Default" method="post" >
    用户名:<input type="text" name="userName" />
    <input type="submit" value="提交" />
</form>
您输入的用户名是:@ViewBag.userName

再来看看服务端代码:

public class TestController : Controller
{
    [HttpGet]
    public ActionResult Default()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Default(string abc)
    {
        ViewBag.userName = Request["userName"];
     或
     ViewBag.userName = HttpContext.Request["userName"];
return View(); } }

之所以在控制器里可以直接使用Request["XXX"]来接收表单项,是因为当前控制器继承自Controler,Controler类中有类型为HttpRequestBase的Request属性,由于这里TestController继承自Controller类,因此其内部也具有类型为HttpRequestBase的Request属性,这个Request属性就存储了当前HTTP请求的客户端相关信息(比如上面的表单信息)。

这里Request属性是HttpRequestBase类型,当我们需要把接收客户端值的任务交给当前控制器对象以外的其他类实例来处理时,那么可以将当前控制器对象的这个Request属性作为参数传给其他类实例。

另外,注意到Controller的定义中还有一个类型为HttpContextBase的HttpContext属性,

 

以上是关于接收客户端在HTTP请求期间发送过来的值(HttpRequestBase/HttpRequestHttpContextBase/HttpConextHttpContext.Current)的主要内容,如果未能解决你的问题,请参考以下文章

servlet

HTTP和SOAP完全就是两个不同的协议

http请求

18 11 24 简单的http服务器

Http状态码

servlet