提示:以下是本篇文章正文内容,下面案例可供参考
一、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
路径段 | 映射信息 |
---|---|
/Student | StudentController类 |
/Details | Details(int id)方法 |
/1 | Details(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()操作方法 ";
}
}