一般找人做网站多少钱,做汽车配件生意的网站,合肥公司网站开发,成都优化网站前几篇文章介绍了路由的相关知识#xff0c;包括原理#xff0c;模板和约束。围绕的一个点就是URL#xff0c;那么URL是如何生成的呢#xff1f; 在 ASP.NET CORE应用程序中#xff0c;使用了一个叫 LinkGenerator的链接生成器来生成URL的。 LinkGenerator是一个中间件组件…前几篇文章介绍了路由的相关知识包括原理模板和约束。围绕的一个点就是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
当然更多的使用可以参考官网内容