ASP.NET Core MVC(二)路由
程序员文章站
2022-06-12 08:25:28
...
一、默认路由规则
新建一个asp.net core mvc项目后,我们可以发现Startup类有所不同:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
相对于空白的项目主要有三个不同点:
- 构造函数注入了IConfiguration依赖,该接口可以用来访问appsetting.json配置文件
- ConfigureServices方法中注册了mvc服务,具体的后面再详解
- Configure方法中终结点的方式变化
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
重点介绍一下路由规则:{controller=Home}/{action=Index}/{id?}.
路径段 | 映射信息 |
---|---|
/Home | HomeController类 |
/Index | Index()方法 |
/id? | 方法中的参数,问号表示可以省略 |
举例:
https://localhost:44324/home/privacy
没有传入参数,会执行HomeController中的Privacy方法。注意不区分大小写。
当然,我们也可以不配置任何路由规则,任何使用RouteAttribute来定义路由规则,暂时不举例了。
二、带参数路由
现在我们将Index方法添加了两个参数,那么怎么才能给该方法传递参数呢?
public IActionResult Index(int id,string name)
{
return View();
}
https://localhost:44324/home/index/?id=9&name=bobo
?表示匹配字符串,所以参数名称需要需要与方法参数名称一致,但是忽略大小写和顺序。
推荐阅读
-
详解ASP.NET Core MVC 源码学习:Routing 路由
-
Visual Studio ASP.NET Core MVC入门教程第一篇
-
ASP.NET Core MVC 配置全局路由前缀
-
你所不知道的ASP.NET Core MVC/WebApi基础系列 (一)
-
ASP.NET MVC实现功能:通过URL路由实现对多语言的支持
-
asp.net core mvc实现伪静态功能
-
asp.net core3.0 mvc 用 autofac
-
ASP.NET Core MVC/WebApi基础系列1
-
ASP.NET Core 2.2中的Endpoint路由详解
-
ASP.NET Core中自定义路由约束的实现