asp.net Core3.0区域与路由配置的方法

 更新时间:2019年05月28日 09:09:41   作者:cqinwn  
这篇文章主要给大家介绍了关于asp.net Core3.0区域与路由配置的方法,文中通过示例代码介绍的非常详细,对大家学习或者使用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]")]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • .net出现80080005错误的解决办法分享

    .net出现80080005错误的解决办法分享

    这篇文章介绍了.net出现80080005错误的解决办法,有需要的朋友可以参考一下,希望可以对你有所帮助
    2013-07-07
  • .NET/C#如何使用反射注册事件详解

    .NET/C#如何使用反射注册事件详解

    反射是.NET中的重要机制,下面这篇文章主要给大家介绍了关于.NET/C#如何使用反射注册事件的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • 在.Net中使用MongoDB的方法教程

    在.Net中使用MongoDB的方法教程

    最近在研究mongodb,在网上搜索发现针对.net 中使用mongodb的文章要么是早期的驱动版本,要么资料很少,所以写个随笔记录一下,本文详细的给大家介绍了在.Net中使用MongoDB的方法教程,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • .net采用ajax实现邮箱注册和地区选择实例

    .net采用ajax实现邮箱注册和地区选择实例

    这篇文章主要介绍了.net采用ajax实现邮箱注册和地区选择的方法,以实例形式详细讲述了.net采用ajax的技巧,非常实用,需要的朋友可以参考下
    2014-10-10
  • C#中HTML字符转换函数分享

    C#中HTML字符转换函数分享

    在ASP.Net中经常会从网面中取数据或更新网页的显示。因为HTML中有些特殊字符如<, >, &等,显示实际值不一致,造成保存到数据库再取出来时会不一样
    2012-07-07
  • asp.net 生成缩略图代码

    asp.net 生成缩略图代码

    asp.net 生成缩略图代码,需要的朋友可以参考下。
    2010-03-03
  • ASP.NET MVC3手把手教你构建Web

    ASP.NET MVC3手把手教你构建Web

    微软更新速度一直都是很快,目前最新版本是ASP.NET MVC 5.1,而我还在刚刚起步研究MVC3.0。本文是MVC的基础,构建最简单的MVC项目,感兴趣的小伙伴们可以参考一下
    2015-09-09
  • 为密码文本框要求不可粘帖字符串只可手动输入(附演示动画)

    为密码文本框要求不可粘帖字符串只可手动输入(附演示动画)

    以前开发程序时,用户登录的密码文本框,是可以粘帖密码字符串的,为了安全起见用户要求不要粘帖,只能由手动输入,感兴趣的朋友可以了解下
    2013-01-01
  • 使用CefSharp在.Net程序中嵌入Chrome浏览器

    使用CefSharp在.Net程序中嵌入Chrome浏览器

    这篇文章介绍了使用CefSharp在.Net程序中嵌入Chrome浏览器的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • asp.net 分页sql语句(结合aspnetpager)

    asp.net 分页sql语句(结合aspnetpager)

    一直用的是存储过程分页,小项目一般不写存储过程,就需要直接写分页sql语句。
    2009-01-01

最新评论