1— .Net MVC之控制器

news/2024/5/12 17:17:58/文章来源:https://blog.csdn.net/Hxw23230/article/details/130582506

在上下文中使用的控制器

问题

答案

什么是控制器?

控制器包含用于接收请求、更新应用程序状态或模型以及选择将发送给客户端的响应的逻辑

控制器有什么用?

控制器是MVC项目的核心,并包含Web应用程序的逻辑

如何使用控制器?

控制器是调用公共方法来处理HTTP请求的C#类。这些方法可以负责直接为客户生成响应但更常见的方式是返回操作结果,告诉MVC应该如何去响应

使用控制器是否有一些隐患或局限性?

刚开始使用MVC时,可以轻松创建包含更适合于模型或视图功能的控制器。一个更为具体的问题是任何以Controller为名的公共类都会被假定为MVC的控制器,这意味着一些可能不是作为控制器的类被意外用于处理HTTP请求

是否有其他的替代选择?

没有,控制器是MVC应用程序的核心部分

 

控制器的定义

控制器的定义:名称以Controller结尾的任何公共类都是控制器

public class PocoController

{

public string Index() => "This is a POCO Controller";

}

PocoController满足了MVC控制器的基础标准,POCO表示“普通的CLR对象”,并指的是使用标准的.Net功能实现控制器,而不是直接依赖于ASP.Net Core MVC 提供的API

 

使用控制器基类

public class DerivedController : Controller

{

    public IActionResult Index()

    {

        return View("Result",$"这是Derived控制器");

    }

}

Controller基类主要优点是可以方便地访问当前请求。

用于上下文数据一些有用的控制器类属性

属性

描述

Request

返回一个HttpRequest对象,用于描述从客户端收到的请求

Response

返回用于创建客户端响应的HttpResponse 对象

HttpContext

返回一个HttpContext对象,它是由其他属性(如请求和响应)返回的许多对象的源,它还提供了有关可用的HTTP功能的信息以及对低级功能(如Web套接字)的访问

RouteData

返回由路由系统在匹配请求时生成的RouteData对象

ModelState

返回一个ModelStateDictionary对象,用于验证客户端发送的数据

 User

返回一个ClaimsPrincipal对象,用于描述已发出请求的用户

使用Controller.Request属性会返回一个HttpRequest对象,以下描述了编写控制器时有用的HttpRequest属性

有用的HttpRequest

属性

描述

Path

返回请求URL的路径部分

QueryString

返回请求URL的查询字符串部分

Headers

返回按名称索引的请求标题的字典

Body

返回可用于读取请求正文的流

Form

返回请求中表单数据的字典(按名称索引)

Cookies

返回按名称索引的请求cookie的字典

 

在POPC控制器里自定义视图

public class PocoController

{

    [ControllerContext]

    public ControllerContext ControllerContext { get; set; }

    public ViewResult Headers()

    {

        var viewResult = new ViewResult()

        {

            ViewName = "DictonaryResult",

            ViewData = new Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary(

                    new EmptyModelMetadataProvider(),

                    new ModelStateDictionary())

            {

                Model = ControllerContext.HttpContext.

                    Request.Headers.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.First())

            }

        };

        return viewResult;

    }

}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_298080.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化测试神器:Python+Requests+Unittest让你的测试用例飞起来

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠 随着互联网的发展,越来越多的应用程序采用了分布式架构,并通过API接口进行数据交换。因此,接口自动化测试已经成为了保证软件质…

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

文章目录 一、前言二、设计思路三、代码实现四、启动测试五、过滤器解码无效六、源码跟踪七、解决方案八、再次重启测试九、总结 一、前言 最近做的一个公司项目,因为客户需要对特殊字符做搜索,但是前端的请求参数无法传递到后端,所以前端对…

光耦继电器和普通继电器的区别概述

光耦继电器和普通继电器都是电气传感器元件中的一种,其都能够将电能转化成机械能,并实现各种开关控制和保护控制。但光耦继电器与普通继电器最大的区别在于其输入电路与输出电路之间通过光电转换器件,而不是实现物理接触。本文将从结构、工作…

Spring MVC——Rest风格

REST(Representational State Transfer) 当我们想表示一个网络资源的时候,可以使用两种方式: 我们分别用查询id为1的用户信息与保存用户信息举例传统风格资源描述形式 http://localhost/user/getById?id1http://localhost/user/saveUser RES…

记一次azkaban调度异常处理

一、背景 预发布环境使用的数据库性能比较低,根据业务测试的需求,需要将数据库更换成 稳定高性能的数据库。更换业务数据库后azkaban定时任务失败 二、数据库服务信息 说明:该部分使用代号来代替,非真实信息 该数据库存储了azka…

linux彻底卸载mysql步骤

第一步,先查看是否安装了mysql mysql -u root -p 如果提示bash: mysql: command not found...则没有安装过mysql 如果提示需要输入密码,那就证明安装了mysql 第二步,查看mysql运行状态并关闭 先查看下mysql的运行状态(如果已经…

电脑缺少msvcp140.dll怎么办,缺少msvcp140一键修复方法

电脑缺少msvcp140.dll怎么办?这个问题相信不少小伙伴都遇到过,msvcp140.dll文件是很多软件跟游戏运行必须用到的文件,如果丢失或者损坏,很多软件都会无法打开运行。其实知道知道方法,修复起来其实也不会很难&#xff0…

OAK相机如何将 YOLO NAS 模型转换成blob格式?

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

k8s pv pvc的使用

k8s pv pvc的使用 安装nfs服务器 yum install rpcbind nfs-utils -y systemctl enable rpcbind systemctl enable nfs systemctl start rpcbind systemctl start nfsmkdir -p /root/data/sc-data [rootmaster sc-data]# cat /etc/exports /root/data/sc-data 192.168.1.0/24(…

运营商三要素验证原理,这篇文章就够了!

引言 运营商三要素验证 API 是一种基于手机号码、身份证号码和姓名等三种信息的验证服务,主要用于验证用户身份信息的真实性和一致性,以及查询手机号码所属的运营商信息。 运营商三要素 API 的验证原理 1. 身份验证的原理 身份信息验证是运营商三要素…

系统安全分析与设计

目录 第五章、系统安全分析与设计1、信息系统安全属性2、对称加密技术与非对称加密技术3、信息摘要4、数字签名5、数字信封与PGP6、网络安全6.1、各个网络层次的安全保障6.2、网络威胁与攻击6.3、防火墙 第五章、系统安全分析与设计 1、信息系统安全属性 安全属性 保密性&…

JavaScript实现求1-100之间不能被3整除的数之和,求100以内偶数的和的两个程序代码

以下为实现求1-100之间不能被3整除数之和求100以内偶数的和的两个程序代码和运行截图 目录 前言 一、实现输入两个数比较两个数的大小 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 二、求100以内偶数的和 2.1 运行流程及思想 2.2 代码段 2.3…

北峰通信,用专业打造“全方位、立体化”应急通信保障体系

最近热映的电影《惊天救援》里,杜江饰演的消防员韩凯,在一次化工园区发生爆炸后,他作为消防救援站里的通信员,第一时间奔赴重灾区,及时将第一现场的情况传到了后方指挥部。 众所周知,通讯系统是生命线系统的…

685页40万字某省市场监管智慧应用一体化项目(word可编辑)

1.2.3.1 数字XX公共能力建设现状 1.2.3.1.1 数字XX通用基础应用平台现状 通用基础应用平台提供具有共性特征的跨部门、跨层级业务应用,与本项目有关的平台包括某省网上办事大厅、某省政务服务 APP 统一平台(X政通 APP)、某省公共信用信息平…

rk3568 修改开机logo

rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与…

python操作集合

# 集合 l{1,2,1} print(l) sset(range(5)) print(s)# 判断in 或 not in print(5 not in l) # 集合元素新增操作 l.add(4) l.update(1,3,6) print(l) l.update((1,3,5)) l.update([4,4,6]) # 删除集合元素 l.remove(2) l.discard(2) # 无目的的删除 自己不带参数 l.pop() l.cl…

AutoCV第七课:ML基础

目录 ML基础前言1. 复习sqrt函数2. 线性回归预测房价2.1 问题分析2.2 代码实现2.3 总结 个人总结 ML基础 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程,链接。记录下个人学习笔记,仅供自己参考。 本次课程主要学习复习 sqrt 函数和线性回归预测房…

【C++】-const对象及成员函数之类和对象中篇完结(中)

💖作者:小树苗渴望变成参天大树 ❤️‍🩹作者宣言:认真写好每一篇博客 💨作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 文章目录 前言一、案例的引入二、const对象和成员函数三、取地…

【2023 · CANN训练营第一季】应用开发深入讲解——第三章应用调试

学习资源 日志参考文档 应用开发FAQ 日志主要用于记录系统的运行过程及异常信息,帮助快速定位系统运行过程中出现的问题以及开发过程中的程序调试问题。 日志分为如下两大类: 系统类日志:系统运行产生的日志。主要包括: Contro…

【跟着陈七一起学C语言】今天总结:函数、数组、指针之间的关系

友情链接:专栏地址 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的错误&#x…