我使用Asp.net core 2.1开始了一个项目,并阅读了有关该主题的几篇文章。
在新架构以及以前的架构中,Asp.Net Core在使用Razor页面时(如在Asp.Net中一样)还允许您在页面后面编写代码。
1-我认为向项目注入依赖的最佳位置是控制器类。我真的不了解在新体系结构中在页面后面编写代码会是什么样子。另外,如果我们考虑优化用法,则应在页面后面添加重新依赖关系。什么是逻辑
2-在处理项目时,我意识到 Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext 类与之间没有任何关系> Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext 类。如果我们要升级任何旧的Asp.Net项目,是否有任何与架构要求相关的文档以及其原因和最佳实践(例如上述DI的案例)
我在构建项目时没有问题,我只是在写 这里记录此主题是为了更好地理解它,而不是 浪费不必要的精力。
答案 0 :(得分:3)
请右键单击Area>添加新的Scaffold项,我想如果您使用的是VS 2017 pro +,则可能会获得可以添加的预定义RazorPages列表,我可以说它们与登录,注册等身份操作有关。 ,更改密码,...您可以在应用程序上花费最少的精力。
就我而言,如果我不打算实现复杂的身份模型,或者我不想为应用程序成员资格使用asp.net身份,那么Razor Pages是最快的方法,通常, RazorPages与Mvc ViewComponents进行了比较(个人而言,我不喜欢在应用程序范围内频繁使用它)(我认为RazorPages使用的是MVVM模式)
长话短说,我相信剃刀页面是在项目中甚至某些小项目中执行某些小功能的最快且更有条理的方式,但是想象一下在一个大项目中您执行了太多操作,那么您将拥有大量的剃须刀页面,将很难维护。我建议您使用mvc方法并根据需要使用razor页面,在两种情况下,您仍可以将类/接口注入控制器构造函数或Razor页面构造函数,并且仍使用内置的asp.net核心DI(< em> services.AddScoped,services.AddTransient,services.AddSingleton )
这是Razor页面的源代码,如果您有心情,可以查看一下;) https://github.com/aspnet/Mvc/tree/master/src/Microsoft.AspNetCore.Mvc.RazorPages