ASP.NET Core MVC获取请求的参数方法示例_实用技巧

来源:脚本之家  责任编辑:小易  

ASP.NET和ASP的区别有以下几点:1、开发语言不同。ASP使用non-type脚本语言来开发应用程序或web网页,在web端添加代码和在客户端添加代码一致,导致代码杂乱无章。ASP.NET使用strongly-type编程语言开发应用程序或web网页,也可以使用.NET Framework框架开发,代码一致性较ASP好了许多。2、运行方式不同。ASP是解释运行的编程框架,使用js等脚本语言,运行速度慢。ASP.NET是编译性的编程框架,运行效率高且使用的是服务器端预先编译好的代码库。3、开发方式不同。ASP是面向过程设计语言,代码前后端不分离,写在同一个页面,代码杂乱无章,维护性和可重用性较低。ASP.NET则是面向对象设计语言,代码前后端分离,一部分专注于编写前端代码,一部分专注于编写相应的后台功能,代码井然有序,易维护且可重用性高。4、复杂性不同。ASP复杂性低,代码容易理解,但是开发效率不高。ASP.NET则较为复杂,但是具有相应的框架,程序设计快速且思路清晰www.zgxue.com防采集请勿采集本网。

前言

一次HTTP请求,就是一次标准IO操作。请求是I,是输入;响应式O,是输出。任何web开发框架,其实都是在干这两件事: 接受请求并进行解析获取参数 根据参数进行渲染并输出响应内容

ASP和asp.net的区别从编程语言种类,服务器,硬件环境的这三方面看区别,其中编程语言种类的区别是最主要的。第一,从编程语言种类看区别。ASP用VBScript、JavaScript等简单容易的脚本语言。结合

所以我们学习一个框架,我认为最首要的是知道如何从请求中获取参数。http请求携带参数的地方主要有下面几个地方: URL Header Body

ASP.Net是什么 1 ASP.Net是什么?ASP.Net是建立在微软新一代.Net平台架构上,利用普通语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架。2.

下面看看ASP.NET Core是如何从这几个位置获取参数的。

ASP和ASP.NET是2个不同的东西,只是它们都是微软的,在IIS上可以很好的支持,所以可以混用在一起。ASP是解释型语言,在执行效率上不高,属于过期技术,但网上的源码不少,在开发低成本小网站上

通过URL获取参数

分析你的问题,你所谓C#.net大概是指在.net平台下使用C#做开发,这个说法就包括了在.net平台下用C#做B/S模式开发也就是包括Asp.net开发。C#只是一种开发语言,而.net是一个开发和用户体验环境。

通过URL传参是HTTP最最常用的办法。这里简单介绍下URL相关的知识。一个URL主要分成4个部分,以http://localhost:5000/fromurl/test?name=mjzhou&age=10为例:

asp.net 不是语言也不是数据库,asp和asp.net都是一门技术,asp是老的,asp.net是微软推出的新的技术,注意,是技术,不是语言。asp.net用的语言是C#,用的框架是.Net框架,以上是程序开发的技术

http:// 协议
localhost:5000 主机地址
/fromurl/test PATH
name=mjzhou&age=10 QueryString

我们通常使用PATH跟QueryString来传递参数。新建一个MVC项目,新建一个Controller名为FromUrlController,通过几个Action来演示如何从URL上获取参数。

通过QuerySting获取参数

Request.Query对象

// /fromurl/test?name=mjzhou public IActionResult Test() { var name = Request.Query["name"]; return Content(name); }

Request.Query对象包含了本次请求的QueryString的键值对列表,所以可以通过它轻松获取QueryString上携带的参数。

自动参数绑定

// /fromurl/test?name=mjzhou public IActionResult Test1(string name) { return Content(name); }

如果Action的型参的名称跟QueryString的Key一致,则MVC框架会自动帮我们绑定参数的值,不用手动获取。

public IActionResult Test2([FromQuery(Name = "id")]string bh) { return Content(bh); }

如果参数绑定的名称跟QueryString的Key不一致,可以使用FromQueryAttribute强制指定绑定的Key的名称。

通过PATH获取参数

Request.Path对象

// /fromurl/test3 public IActionResult Test3() { var path = Request.Path; return Content(path); }

Request.Path对象包含了本次http请求的Path的原始信息,一般可以通过/来分隔,手工获取想要的参数。

自动参数绑定

// /fromurl/Test4/mjzhou/1000 [Route("FromUrl/test4/{name}/{id}")] public IActionResult Test4(string name, int id) { return Content($"{name}/{id}"); }

Path的自动参数绑定,需要配合RouteAttribute实现,RouteAttribute主要是指定一个Path的模板,通过这个模板可以告诉路由是否匹配这个Action,另外一个就是可以告诉参数绑定,如何解析这个path实现参数绑定。

[Route("FromUrl/test6/{name}/{id}")] public IActionResult Test6([FromRoute(Name ="name")]string xm, [FromRoute(Name = "id")]int bh) { return Content($"{xm}/{bh}"); }

如果Action的型参名称跟RouteAttribute模板的中的名称不一样,那么可以使用FromRoute强制指定解析的名称。

[HttpGet("FromUrl/test5/{name}/{id}")] public IActionResult Test5(string name, int id) { return Content($"{name}/{id}"); }

HttpGetAttribute、HttpPostAttribute等attribute同样可以完成RouteAttribute的效果,而且还指定了action接受的HTTP Method的方法,可以说是加强版的RouteAttribute。

从Header上获取参数

添加一个FromHeaderController,通过几个action来演示如果从http headers上获取参数。

Request.Headers对象

// /FromHeader/test public IActionResult Test() { var myName = Request.Headers["myName"]; return Content(myName); }

Request.Headers是一个字典,包含了本次请求的Headers。所以我们可以通过Request.Headers对象轻松获取某个header的值。

自动参数绑定

public IActionResult Test1([FromHeader]string myName) { return Content(myName); }

通过在action的型参上打上FromHeaderAttribute,可以告诉框架自动从header获取参数。

public IActionResult Test2([FromHeader(Name = "myName")]string name) { return Content(name); }

如果action的型参跟header的key值不一致,可以通过FromHeaderAttribute强制指定匹配的header的key值。

从Body获取参数

我们开发的时候经常通过表单提交数据,或者通过AJAX往后台提交一个JavaScript对象,本质上这些数据都是通过HTTP的Bady提交回去的。新建一个FromBodyController控制器,通过几个Action来演示如何获取Body的参数。

Request.Body对象

public class model1 { public string NAME { get; set; } } public async Task<IActionResult> Test() { Request.EnableBuffering(); string body = ""; var stream = Request.Body; if (stream != null) { stream.Seek(0, SeekOrigin.Begin); using (var reader = new StreamReader(stream, Encoding.UTF8, true, 1024, true)) { body = await reader.ReadToEndAsync(); } stream.Seek(0, SeekOrigin.Begin); } var model = JsonConvert.DeserializeObject<model1>(body); return Content(model.NAME); }

Request.Body是一个Stream,保存了本次请求的body数据。所以我们只要把这个stream读出来,就能获取提交的数据。有了原始的数据,就可以通过反序列化等操作转换为模型,更简单的获取参数了。注意,ASP.NET Core想要读取这个对象,必须先调用Request.EnableBuffering()这个方法。

使用postman测试一下:

参数自动绑定

public IActionResult Test1([FromBody]model1 model) { return Content(model.NAME); }

使用FromBodyAttribute可以把body的数据自动反序列化成型参的模型。但是请注意使用[FromBody]请求的Content-Type必须是application-json。

使用postman测试下:

public IActionResult Test2([FromForm]model1 model) { return Content(model.NAME); }

使用FromFormAttribute可以把body的数据自动反序列化成型参的模型。但是请注意使用[FromForm]请求的Content-Type必须是application/x-www-form-urlencoded。

使用postman测试下:

总结

ASP.NET Core获取请求参数主要从URL,Headers,Body等位置获取。我们可以通过Request.Query、Request.Headers、Request.Body来手工获取数据。也可以通过[FromQuery]、[FromHeader]、[Frombody]等Attribute来实现参数的自动绑定。

好了,到此这篇关于ASP.NET Core MVC获取请求的参数的文章就介绍到这了,更多相关ASP.NET Core MVC获取请求参数内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

分析:ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和Web服务的技术。ASP.NET页在服务器上执行,并生成发送到桌面或浏览器的标记(如HTML、XML或者WML)。可以使用任何.NET兼容语言(比如Visual Basic、C#)编写Web服务文件中的服务器端(而不是客户端)逻辑。ASP.NET页使用一种由事件驱动的、已编译的编程模型,这种模型可以提高性能并支持将用户界面层同应用程序逻辑层相隔离。注意:Web应用程序和Web服务可调用公共语言运行库的任意功能,例如类型安全、继承、语言互操作、版本控制和集成安全性等。ASP.NET技术有几个显著的特性,既:1、强大性和适应性 因为ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在支持.NET Framework所有平台上。ASP.NET同时也是language-independent语言独立化的,所以,可以选择一种最适合自己的语言来编写应用程序,或者可以用多种语言来写应用程序,这样的多种程序语言协同工作的能力可以保护基于COM+开发的程序,并能够完整的移植向ASP.NET。2、简单性和易学性.NET Framework封装了大量的类库,使ASP.NET完成一些常见的任务如表单的提交、客户端的身份验证、分布系统,并可以使网站配置变得非常简单。3、高效可管理性 ASP.NET使用一种字符基础的、分级的配置系统,使服务器环境和应用程序的设置更加简单。ASP.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,可以很大的提高运行速度。即使现在的ASP.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高运行效能。总结:ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和Web服务的技术,利用公共语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 如何asp.net core razor中处理ajax请求
  • asp.net core中调整http请求大小的几种方法详解
  • asp.net core控制器如何接收原始请求正文内容详解
  • 使用nlog给asp.net core做请求监控的方法
  • asp.net core中间件计算http请求时间示例详解
  • asp.net core利用urlfirewall对请求进行过滤的方法示例
  • 详解centos 7.4下如何部署asp.net core结合consul
  • asp.net mvc signalr来做实时web聊天实例代码
  • asp.net中static变量和viewstate的使用方法(谨慎)
  • 基于.net中:自动将请求参数绑定到aspx、ashx和mvc的方法(菜鸟必看
  • datareader不能使用using的详细示例
  • xpath的数据和节点类型以及xpath中节点匹配的基本方法
  • asp.net cookies需要注意的一点
  • 在ashx文件中使用session的解决思路
  • asp.net数据库缓存依赖实例分析
  • asp.net批量多选文件上传解决方案
  • ASP.NET是什么
  • ASP.NET和ASP的区别是什么?
  • .Net 和ASP.Net 有什么区别呢?
  • asp.net是什么?
  • ASP和asp.net有什么区别的呢?最主要的区别是什么呢?
  • ASP NET 是什么?
  • .net和asp的区别
  • asp.net与.net的区别
  • asp.net有什么用,主要是做什么的?
  • asp.net中与的区别?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧如何asp.net core razor中处理ajax请求asp.net core中调整http请求大小的几种方法详解asp.net core控制器如何接收原始请求正文内容详解使用nlog给asp.net core做请求监控的方法asp.net core中间件计算http请求时间示例详解asp.net core利用urlfirewall对请求进行过滤的方法示例详解centos 7.4下如何部署asp.net core结合consulasp.net mvc signalr来做实时web聊天实例代码asp.net中static变量和viewstate的使用方法(谨慎)基于.net中:自动将请求参数绑定到aspx、ashx和mvc的方法(菜鸟必看datareader不能使用using的详细示例xpath的数据和节点类型以及xpath中节点匹配的基本方法asp.net cookies需要注意的一点asp.net数据库缓存依赖实例分析asp.net批量多选文件上传解决方案java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net对路径"xxxxx"asp.net汉字转拼音和获取汉字首字checkboxlist两列并排编译为表格显示具体asp.net实现上传excel功能asp.net 通用万级数据分页代码[修正下载地asp.net core中自定义路由约束的实现asp.net mvc5网站开发概述(一)如何使用pm2守护你的.net core应用程序详asp.net解决上传大文件问题的方法asp.net url重写浅谈asp.net后台关闭当前页面并传值的两种方法在asp.net中插入flash代码实例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved