asp.net Core3.0区域与路由配置的方法
在ASP.NET Core 3.0中路由配置和2.0不一样了
一、MVC 服务注册
ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。
三个新的顶级扩展方法与 MVC 方案上IServiceCollection可用。 模板使用这些新方法,而不是UseMvc。 但是,AddMvc继续像它已在以前的版本。
下面的示例将添加对控制器和与 API 相关的功能,但不是视图或页面的支持。 API 模板使用此代码:
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); }
下面的示例将添加对控制器、 与 API 相关的功能,和视图,但不是页面的支持。 Web 应用程序 (MVC) 模板使用此代码:
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); }
下面的示例添加支持 Razor 页面和最小控制器支持。 Web 应用程序模板使用此代码:
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); }
此外可以组合的新方法。 下面的示例是等效于调用AddMvcASP.NET Core 2.2 中:
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddRazorPages(); }
二、Startup.Configure配置
一般不建议:
添加UseRouting。
如果该应用程序调用UseStaticFiles,将置于UseStaticFiles之前 UseRouting。
如果应用使用身份验证/授权功能,如AuthorizePage或[Authorize],将对UseAuthentication并UseAuthorization后 UseRouting。
如果应用使用CORS功能,如[EnableCors],将放置UseCors下一步。
替换UseMvc或UseSignalR与UseEndpoints。
以下是一种Startup.Configure典型的 ASP.NET Core 2.2 应用中:
public void Configure(IApplicationBuilder app) { ... app.UseStaticFiles(); app.UseAuthentication(); app.UseSignalR(hubs => { hubs.MapHub<ChatHub>("/chat"); }); app.UseMvc(routes => { routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); }
现在的控制器映射内发生UseEndpoints。
添加MapControllers如果应用使用属性路由。 由于路由包括对许多框架在 ASP.NET Core 3.0 或更高版本的支持,添加属性路由的控制器是参加。
将为以下内容:
MapRoute 使用 MapControllerRoute
MapAreaRoute 使用 MapAreaControllerRoute
由于路由现在包括对不止是 MVC 的支持,已更改了术语进行明确说明他们所做的这些方法。 如传统路由MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRoute它们要添加的顺序应用。 将第一位更具体的路由 (如某一区域的路由)。
如下示例中:
- MapControllers 添加了对属性路由的控制器支持。
- MapAreaControllerRoute 将控制器的传统路由添加区域。
- MapControllerRoute 添加控制器的常规路由。
现在映射 Razor 页面内发生UseEndpoints。
添加MapRazorPages如果应用使用 Razor 页面。 由于终结点路由包括对许多框架的支持添加 Razor 页面现在参加。
更新后asp.netCore3.0中Startup.Configure代码:
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.UseCookiePolicy(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.MapAreaControllerRoute( name: "areas", "areas", pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"); endpoints.MapRazorPages(); }); }
如果要进行分区路由,需要在控制器Controller头加Area和Route标签,否则不能像在asp.netCore2.0中自动路由控制器和Action。示例代码如下:
namespace WebApplication1.Areas.CMS.Controllers { [Area("CMS")] [Route("CMS/[controller]/[action]")] public class NewsController : Controller { public IActionResult Index() { return View(); } public IActionResult List() { return View(); } } }
这两句一定要加[Area("CMS")]、[Route("CMS/[controller]/[action]")]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
上一篇:win7-vs2012下安装.net frame work 的过程图文详解
栏 目:ASP.NET
下一篇:.net core EF Core调用存储过程的方式
本文标题:asp.net Core3.0区域与路由配置的方法
本文地址:https://www.xiuzhanwang.com/a1/ASP_NET/10924.html
您可能感兴趣的文章
- 01-11如何给asp.net core写个简单的健康检查
- 01-11docker部署Asp.net core应用的完整步骤
- 01-11ASP.NET Core静态文件的使用方法
- 01-11ASP.Net Core中使用枚举类而不是枚举的方法
- 01-11Asp.net core利用MediatR进程内发布/订阅详解
- 01-11ASP.NET Core中间件计算Http请求时间示例详解
- 01-11asp.net core集成JWT的步骤记录
- 01-11ASP.NET Core MVC学习教程之路由(Routing)
- 01-11ASP.NET Core实现自定义WebApi模型验证详解
- 01-11ASP.NET Core 实现自定义WebApi模型验证实例讲解
阅读排行
本栏相关
- 01-11vscode extension插件开发详解
- 01-11VsCode插件开发之插件初步通信的方法
- 01-11如何给asp.net core写个简单的健康检查
- 01-11.net core高吞吐远程方法如何调用组件
- 01-11浅析.Net Core中Json配置的自动更新
- 01-11.NET开发人员关于ML.NET的入门学习
- 01-11.NET Core 迁移躺坑记续集之Win下莫名其
- 01-11.net core webapi jwt 更为清爽的认证详解
- 01-11docker部署Asp.net core应用的完整步骤
- 01-11ASP.NET Core静态文件的使用方法
随机阅读
- 01-10C#中split用法实例总结
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10SublimeText编译C开发环境设置
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-11ajax实现页面的局部加载
- 01-10delphi制作wav文件的方法