详解ASP .网络核心2.0路由引擎之网址生成(译)
问题
如何在ASP .网络核心2.0中由路由引擎来生成网址?
答案
新建一个空项目,修改Startup.cs文件,添加手动音量调节服务和中间件:
public void ConfigureServices(IServiceCollection services){ services .AddMvc();}公共void Configure(IApplicationBuilder应用程序,ihostingenvirmentenv){ if(env .IsDevelopment()) { app .usedeveloper异常页();}应用程序.UseMvc(routes={ routes .MapRoute(name: 'goto_one ',template: 'one ',默认s 3360 new { controller=' Home ',action=' page one ' });路线. MapRoute(name: 'goto_two ',template: 'two/{id?} ',默认s 3360新{控制器=' Home ',操作=' page two ' });路线MapRoute(名称: '默认',模板: ' {控制器=Home }/{操作=Index }/{ id?}');});} 添加一个移动控制器控制器类:
公共类移动控制器:控制器{公共IActionResult Index(){ var URl=URl .操作('索引');///移动返回内容($ ' Mobile/Index(URL : { URL })'));} public IActionResult page one(){ var URl=URl .操作('第一页');///手机/第一页返回内容($“手机/一(URL : { URL })”);}[HttpGet]public IActionResult第二页(){ var Url=URl .操作('第二页');///手机/第二页或/手机/第二页/1?返回内容($ '(GET)Mobile/Two(URL : { URL })');}[httpset]public IActionResult第二页(int id){ var Url=URl .操作('第二页');///手机/第二页/1返回内容($ '(POST)Mobile/two : { id }(URL : { URL })');} public IActionResult第三页(){ var Url=URl .routerl(' goto _ two ',new { id=5 });///二/五返回内容($ '手机/三(URL : { URL })'));} public IActionResult page FOur(){ var URl=URl .routerl(' goto _ two ',new { q=5 });///两个?q=5返回内容($“移动/四(URL : { URL })”);} public IActionResult第五页(){ return redirectto action('第六页');}公共IActionResult第六页(){返回内容('移动/六(移动/五也会来这里)');}} 讨论
我们可以使用手动音量调节的路由机制来生成网址,而无需在应用程序中硬编码网址MVC。有这么做的所有信息,来自于我们设置路由映射所提供的模板。
手动音量调节提供了IUrlHelper接口来提供生成网址的功能。这是通过在控制器基类,视图和试图组件公开全球资源定位器(统一资源定位符)属性来实现的。
IUrlHelper接口提供两个关键的方法来生成网址:
1.行动:通过提供控制器,方法和路由参数值来生成网址。2.RouteUrl:通过提供路由映射名称和路由参数来生成网址。
如果调用上述方法时未提供控制器和路由参数,那么手动音量调节会从当前请求或者方法参数中获取(即是从当前上下文的环境变量中获取)。下面的方法存在于移动控制器控制器中:
public IActionResult第二页(int id){ var Url=URl .操作('第二页');///手机/第二页/1返回内容($ '(POST)Mobile/two : { id }(URL : { URL })');}路由参数可以作为匿名对象来提供:
public IActionResult第三页(){ var Url=URl .routerl(' goto _ two ',new { id=5 });///二/五返回内容($ '手机/三(URL : { URL })'));}
如果手动音量调节无法将这些值映射到地址标记,那么这些参数会作为网址的查询字符串拼接起来:
public IActionResult page FOur(){ var URl=URl .routerl(' goto _ two ',new { id=5,key 1=' value 1 ' });///二/五?key1=值1返回内容($“移动/四(URL : { URL })”);}
ControlBase类上有一个很方便的方法重定向至操作,用来将用户请求重定向到某个控制器方法中,这一过程是在客户端完成的:
public IActionResult第五页(){ return redirectto action('第六页');}公共IActionResult第六页(){返回内容('移动/六(移动/五也会来这里)');}
为了将IUrlHeper作为依赖项注入需要的类中,我们需要首先在配置服务中配置相应的服务:
public void configure services(iseries集合服务){ 0服务add singletonicationcontextaccessor,action context accessor();服务部门AddScopedIUrlHelper(工厂={ var actionContext=工厂)。getserviceactioncontext访问器().ActionContext(操作上下文):返回新的URL helper(action context):});服务部门添加MVC();}个:你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看,你看IUrlHelper,哦,亲爱的,你是谁?你是谁?你是谁网址列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登列支敦士登。
安藤?安藤
哎哎哎:339 tahird。com/2017/08/20/ASP-net核心手动音量调节路由/
朱塞佩朱塞佩朱塞佩朱塞佩,阿云阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜阿云娜,吴亚玲吴亚玲吴亚玲。
版权声明:详解ASP .网络核心2.0路由引擎之网址生成(译)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。