ASP.NET Core MVC中的路由



提示:以下是本篇文章正文内容,下面案例可供参考

一、ASP.NET Core MVC中的路由

1.常规路由(传统路由)

public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
 //其他代码
 app.UseStaticFiles();
//UseRouting()中间件主要用于验证EndpointRoute()中间件服务是否加载进来 
 app.UseRouting();
 app.UseEndpoints(endpoints =>
 {
 endpoints.MapControllerRoute(
 name:"default",
 pattern:"{controller=Home}/{action=Index}/{id?}");
 });
}

默认路由模板规则:{controller=Home}{/ action = Index}{/ id?},大多数的URL都会
按照这个规则进行映射,具体如表14.1所示。

表14.1

路径段映射信息
/StudentStudentController类
/DetailsDetails(int id)方法
/1Details(int id)操作方法的id参数

如图
在这里插入图片描述

2.属性路由

代码如下(示例):我们使用的UseMvc()方法不包含默认路由模板,无法进行参数传递。

publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc();
//app.UseMvc(routes=>
//{
//routes.MapRoute("default","{controller=Home}/{action=Index}/{id?}");
//});
}

这意味着,目前应用程序没有配置任何的路由,当导航到以下任何URL时,我们会看到404错误。

都是404错误。
http://localhost:13380
http://localhost:13380/home
http://localhost:13380/home/index

代码如下(示例):

1.属性路由

1.使用Route()属性来定义路由,我们可以在Controller类或Controller()操作方法上应用Route()属性。

public class HomeController:Controller
{
	[Route("")]
	[Route("Home")]
	[Route("Home/Index")]
	public ViewResult Index()
	{
		return View();
	}
	
}

2.在属性路由中自定义路由

[Route("[controller]")]
public class DepartmentsController:Controller
{
	 [Route("[action]")]
	 public string List()
	 {
	 return "我是Departments控制器的List()操作方法 ";
	 }
	 
	 [Route("[action]")]
	 public string Details()
	 {
	 return "我是Departments控制器的Details()操作方法 ";
	 }
}

3.在控制器上设置一次,而不是在控制器的每个操作方法中包含[action]标记

[Route("[controller]/[action]")]
public class DepartmentsController:Controller
{
	 public string List()
	 {
	 return "我是Departments控制器的List()操作方法 ";
	 }
	 
	 public string Details()
	 {
	 return "我是Departments控制器的Details()操作方法 ";
	 }
}

总结

使用属性路由时,属性路由需要在实际使用它们的操作方法上方设置。属性路由比传统路由提供了更大的灵活性。通常情况下,常规路由用于服务HTML页面的控制器,而属性路由则用于服务RESTful API的控制器。 当然,这只是规范和建议,如果读者的应用程序需要有更多的路由灵活性,我们也可以将常规路由与属性路由混合使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值