【Web.路由】——URL生成
前几篇文章介绍了路由的相关知识,包括原理,模板和约束。围绕的一个点就是URL,那么URL是如何生成的呢?
在 ASP.NET CORE应用程序中,使用了一个叫 LinkGenerator的链接生成器来生成URL的。
LinkGenerator是一个中间件组件,可以在 DI 容器中得到它的实例,从而使用它来生成 URL。
在 ASP.NET CORE应用程序的所有类中以 DI的方式注入LinkGenerator来生成具体的URL。生成 URL是指根据当前上下文环境、控制器、操作、参数等生成一个可以点击的超链接字符串。
我们都知道,我们路由到资源的一般形式是——>控制器——>控制器下的方法——>方法中的参数
于是就有类似的URL字符串——>/控制器名/方法名/参数。
而这个URL模式生成的模板,是根据路由模板生成的,可以看这篇文章。
在MVC项目下注入LinkGenerator
比如在一个控制器中添加LinkGenerator,我们使用构造函数注入的方式
private LinkGenerator _link;
public 业务类名Controller(LinkGenerator link)
{
_link = link;
}
使用LinkGenerator生成URL
假设在控制器下有个Show方法,在注入了LinkGenerator之后,就可以使用它来生成URL。具体为
public IActionResult Show()
{string? url = _link.GetPathByAction("Add", "Product");return View();
}
这段代码中,GetPathByAction说明的是
(1). 第 1 个 是 action ,它是必选参数,用于指定操作的名称,这里使用的操作是Add方法。
(2). 第 2 个 是 controller,它也是必选参数,用于指定控制器的名称,这里使用的控制器是 Product。
(3). 该函数之后的参数都是可选参数,可有可无。
(4). 返回类型是string类型,也就是生成后的 URL 字符串。
注意这里的Show方法返回的是View,所以需要有个视图去接这个返回值,否则会报错。
当然也可以打断点在Return view这里,就可以看到生成的URL是什么样子的。
如何使用LinkGenerator生成带有参数的URL
使用 LinkGenerator生成的URL 中,需要使用object类型的 values 来实现,是一个匿名类型。
以id参数为例——>
public IActionResult Show(){string? url = _link.GetPathByAction("Add", "Product", new { id = "100" });return View();}
从代码中得知,此参数类型是一个匿名参数,其中的id为参数值,值为100。
LinkGenerator生成URL时,两种类型值
使用它生成URL时,会有两种类型的值
(1). 显式值:明确指出控制器或操作的文本名称。 需要开发人员明确的知道生成URL的控制器、操作和参数的值的名称。
(2). 环境值:根据当前HTTP上下文 HttpContext 自动识别出控制器或操作的值。如果我们把url改写为
string? url = _link.GetPathByAction(HttpContext);
这个代码的意思就是根据 HttpContext上下文生成的URL就是当前访问的URL。
两种类型的混合使用
显式值会替代HttpContext指定的环境值,也就是显式值优先。
具体使用如下
public IActionResult Show(){string? url = _link.GetPathByAction(HttpContext, "List", null, new { id = 100 });return View();}
这段代码的意思就是,如果某个可选参数没有,直接null替代,生成的URL就是路由模板规定的范式/控制器名/List/100
当然,更多的使用可以参考官网内容
相关文章:

【Web.路由】——URL生成
前几篇文章介绍了路由的相关知识,包括原理,模板和约束。围绕的一个点就是URL,那么URL是如何生成的呢? 在 ASP.NET CORE应用程序中,使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…...
使用 Java 实现从搜索引擎批量下载图片
在进行一些数据收集、图像处理或研究工作时,我们可能需要从网络上批量下载高质量的图片。本文将介绍如何使用 Java 和 Jsoup 库,从搜索引擎中抓取图片,解析详情页并过滤出高质量图片。通过以下几个步骤,您可以自动化这个图片收集的…...
基于Matlab GUI的说话人识别测试平台
基于Matlab GUI的说话人识别测试平台 摘 要:为了克服在Matlab中语音处理工具箱的不足,设计出基于Matlab图形用户界面(GUI)的说话人识别测试平台。系统框架设计:特征参数采用美尔倒谱系数及差分美尔倒谱系数,…...

Leetcode 热题100之二叉树2
1.二叉树的层序遍历 思路分析:层序遍历是逐层从左到右访问二叉树的所有节点,通常可以使用广度优先搜索(BFS)来实现。我们可以使用一个队列(FIFO)来存储每一层的节点,并逐层访问。 初始化队列&a…...

<项目代码>YOLOv8 煤矸石识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...

GA/T1400视图库平台EasyCVR视频分析设备平台微信H5小程序:智能视频监控的新篇章
GA/T1400视图库平台EasyCVR是一款综合性的视频管理工具,它兼容Windows、Linux(包括CentOS和Ubuntu)以及国产操作系统。这个平台不仅能够接入多种协议,还能将不同格式的视频数据统一转换为标准化的视频流,通过无需插件的…...

LVM与磁盘配额
文章目录 LVM与磁盘配额1 LVM概述1.1 名词解释1.2 LVM优势 2 LVM相关命令2.1 创建逻辑卷过程2.2 对逻辑卷扩容 3 磁盘配额3.1 磁盘配额的特点3.2 磁盘配额的命令3.3 查看配额使用情况3.4 验证磁盘配额3.5 实验 LVM与磁盘配额 1 LVM概述 1.1 名词解释 LVM:logical…...

xmuoj [蒙德里安的梦想] 状压dp个人笔记
本题是状压dp经典题目,很多人都是通过这一题开始对状压dp有所了解。 在进行讲解之前,我们先通过几个问答大致了解状压dp。 一、问答 1. 问题:什么是状压dp? 回答:状压dp即为状态压缩动态规划,何为状态压缩&#x…...
ubuntu22安装搜狗输入法不能输入中文
关闭Wayland 在/etc/gdm3/custom.conf文件内,取消注释WaylandEnable cat /etc/gdm3/custom.conf | grep WaylandEnable WaylandEnablefalse 其它步骤参考搜狗官方教程 https://pinyin.sogou.com/linux/help.php...

HtmlAgilityPack 操作详解
目录 1.安装 HtmlAgilityPack 2. 示例 HTML 3. 使用 HtmlAgilityPack 进行 HTML 解析与操作 4. 代码详解 1.加载html文档 2.选择元素 3. 提取属性 4.修改属性 5.常用的几种获取元素的 XPath 写法 HtmlAgilityPack: 轻量且高效,适合进行常规的 H…...

基于SSM医院门诊互联电子病历管理系统的设计
管理员账户功能包括:系统首页,个人中心,用户管理,医生管理,项目分类管理,项目信息管理,预约信息管理,检查信息管理,系统管理 用户账号功能包括:系统首页&…...

【读书笔记/深入理解K8S】集群网络
前言 上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习&…...

【专有网络VPC】连接公网
通过ECS实例固定公网IP、弹性公网IP、NAT网关、负载均衡使专有网络中的云资源可以访问公网(Internet)或被公网访问。 概述 专有网络是您自定义的云上私有网络。专有网络中的云资源默认无法访问公网,也无法被公网访问。您可以通过配置ECS实例…...

论文 | Legal Prompt Engineering for Multilingual Legal Judgement Prediction
这篇文章探讨了如何利用“法律提示工程”(LPE)来指导大型语言模型(LLM)进行多语言法律判决预测(LJP)。主要内容: LPE 的概念: LPE 是指通过设计特定的提示(promp…...
国科安芯抗辐照MCU和CANFD芯片发布
国科安芯科技有限公司近期发布了两款重要的芯片产品:抗辐照MCU芯片和抗辐照CANFD芯片。这两款芯片的发布标志着国科安芯在高性能、高安全性芯片产品研制方面取得了显著进展,特别是在抗辐照技术领域。 1. 抗辐照MCU芯片:国科安芯研发的AS32A4…...
C++ 并发专题 - 无锁数据结构(概述)
一:概述: 无锁数据结构是一种在多线程环境中实现线程安全的结构,它允许多个线程在没有传统锁机制的情况下并发访问和修改数据。这种设计的目标是提高程序的性能和响应性,避免锁竞争和上下文切换的开销。 二:原理&…...
NLP领域的经典算法和模型
在自然语言处理(NLP)领域,经典算法和模型众多,它们在不同任务中发挥着重要作用。以下是一些NLP领域的经典算法和模型的详细介绍: 一、基础模型 词袋模型(Bag of Words,BoW) 原理&a…...

提升安全上网体验:Windows 11 启用 DOH(阿里公共DNS)
文章目录 阿里公共 DNS 介绍免费开通云解析 DNS 服务Windows 编辑 DNS 设置配置 IPv4配置 IPv6 路由器配置 DNS 阿里公共 DNS 介绍 https://alidns.com/ 免费开通云解析 DNS 服务 https://dnsnext.console.aliyun.com/pubDNS 开通服务后,获取 DOH 模板࿰…...

论文概览 |《Journal of Transport Geography》2024.10 Vol.120
本次给大家整理的是《Journal of Transport Geography》杂志2024年9月第120卷的论文的题目和摘要,一共包括17篇SCI论文! 论文1 Modelling scenarios in planning for future employment growth in Stockholm 斯德哥尔摩未来就业增长规划情景建模 【摘要…...

yum不能使用: cannot find a valid baseurl for repo: base/7/x86_64
使用yum命令时报错: 原因: CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...