1— .Net MVC之控制器

news2024/12/28 3:54:53

在上下文中使用的控制器

问题

答案

什么是控制器?

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

控制器有什么用?

控制器是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.coloradmin.cn/o/506387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第五讲:设计库的管理和使用

第五讲:设计库的管理和使用 概述: 课程内容简介: 1、 下载Design kit 2、 安装 Design kit 3、 Design kit的使用 4、 如何进行优化设计 Design Kit – 由元件厂商所提供设计元件库, PDK – Process Design Kit (IC的…

智能改写工具免费-智能改写工具

中文改写软件 您好,中文改写软件是使用人工智能技术改写中文文本的工具。它可以自动识别并改写文本中的某些词语、短语或句子,以使它们在语意上更为准确、清晰或通顺。 中文改写软件的工作原理基于自然语言处理技术。它使用预先训练好的模型&#xff0…

Windows Server 2016安装Mysql 5.6

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

软考——软件工程,面向对象,数据流图,数据库设计,UML建模,数据结构及算法应用,面向对象程序设计

软件工程 开发模型 瀑布模型 其他模型 增量模型和螺旋模型 V模型 瀑布模型是结构化模型,喷泉模型是面向对象模型 构件组装模型(CBSD) 统一过程 敏捷开发方法 信息系统开发方法 需求 结构化设计 基本原则 内聚与耦合 软件测试 测试原则与类…

Nmap服务版本探测研究

文件nmap-services 作用:预定义服务和端口映射表,该文件原则上不允许修改 nmap-services未定义33890端口映射,扫描结果: PORT STATE SERVICE REASON 33890/tcp open unknown syn-ack nmap-services定义33890端口映射&#x…

从环形图出发,打造高效数据分析流程

什么是环形图? 环形图是一种数据可视化的图表类型,它通常用于显示数据的比例关系和占比情况。环形图与饼图类似,都是由一个圆形或圆环和若干个扇形组成,每个扇形的面积大小表示该数据所占比例的大小。与饼图不同的是,…

强化学习p4-Actor-Critic

策略网络和价值网络的架构 我们知道状态价值函数 V π ( s ) ∑ a π ( a ∣ s ) ⋅ Q π ( s , a ) V_\pi(s)\sum_a\pi(a|s)\cdot Q_\pi(s,a) Vπ​(s)∑a​π(a∣s)⋅Qπ​(s,a),在策略学习中,我们用神经网络去近似 π \pi π函数,得到策…

模糊PID(重心法解模糊梯形图FC)

模糊PID的模糊化请参看下面的博客文章: 博途PLC模糊PID三角隶属度函数指令(含Matlab仿真)_plc 模糊pid_RXXW_Dor的博客-CSDN博客三角隶属度函数FC,我们采用兼容C99标准的函数返回值写法,在FB里调用会更加直观,下面给大家具体讲解代码。常规写法的隶属度函数FC可以参看下…

分享一个提高运维效率的 Python 脚本

哈喽大家好我是咸鱼,今天给大家分享一个能够提升运维效率的 python 脚本 咸鱼平常在工作当中通常会接触到下面类似的场景: 容灾切换的时候批量对机器上的配置文件内容进行修改替换对机器批量替换某个文件中的字段 对于 Linux 机器,咸鱼可以…

Fiddler 抓包工具使用 - 手摸手教你

Fiddler简介 Fiddler 是一款免费、灵活、操作简单、功能强大的 HTTP 代理工具,是目前最常用的 HTTP 抓包工具之一。可以抓取所有的 HTTP/HTTPS 包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等功能。 Fiddler工作…

2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌

蓝牙耳机是除手机外我们使用频率最高的数码产品,我做蓝牙耳机经销商五年来,对各个品牌都有深入了解。近期看到很多新手们咨询什么蓝牙耳机好,我给大家盘点一下新手必看的五大蓝牙耳机品牌。 1.JEET Air 2蓝牙耳机 推荐理由:专为舒…

和AI聊天

AI产品工具目录:AI产品目录 Prompt 在和AI聊天时,你得表明你需要啥,并且描述的越精确,AI回答的就越贴近你的预期,简单的对话,可以自己尝试,但是如果想做应用级别的就得学习这种聊天技术&#…

Guitar Pro8.1最新中文版自动扒谱编写吉他谱 新功能讲解

Guitar Pro8是一款非常受欢迎的音乐制作软件,它可以帮助用户创建和编辑各种音乐曲谱。从其诞生以来就送专门为了编写吉他谱而研发迭代的。 尽管这款软件可能已经成为全球最受欢迎的吉他打谱软件,在编写吉他六线谱和乐队总谱中始终处于行业领先地位&…

测试人的内卷,性能测试入门到实践该如何做?突破内卷...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试如何入门…

什么是边缘计算盒子?要看哪些参数

一、什么是边缘计算盒子 边缘计算盒子(Edge Computing Box)是一种用于边缘计算的设备,通常包括计算、存储、网络和安全等功能。它通常是一台小型的计算机,可以放置在物联网设备、传感器或其他边缘设备附近,用于处理和…

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

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

linux 定时器

Linux 系统实现底半部的机制主要有tasklet,工作队列和软中断。 tasklet 和工作队列都是调度中断底半部的良好机制,tasklet 基于软中断实现。 内核定时器也依靠软中断实现;内核中的延时是忙等待或者睡眠等待,为了充分利用CPU资源&#xff0c…

还在找ChatGPT的国内镜像?这些都很不稳定,试试这两个

ChatGPT 因为账号限制的原因,注册的流程比较复杂,特别是需要国外的手机号进行接收验证码,这就难坏了很多国内的用户。 为了能用上ChatGPT 很多人免费的搭建了一些国内能够使用的ChatGPT 。这些网址不用魔法就能够使用ChatGPT ,非…

基于docker的apisix网关的java插件开发

基于docker的apisix网关的java插件开发 1 创建java插件项目1.1 从github上获取demo1.2 改造demo 2 快速部署2.1 重新制作apisix镜像2.2 修改/apisix-docker/example/apisix_conf/config.yaml2.3 修改/apisix-docker/example/docker-compose.yml2.4 重新启动apisix网关 3 apisix…

网络基础学习:osi七层模型

osi七层模型 什么是OSI,什么是ISO?为什么ISO要提出OSI网络七层模型?OSI七层的划分以及具体内容第七层 应用层第六层 表示层第五层 会话层第四层 传输层第三层 网络层第二层 数据链路层第一层 物理层 每一层与设备的对应关系 什么是OSI,什么是…