ASP.NET 5 MVC(Visual Studio 2015):一个名为Inject的关键字
我刚刚安装了visual studio 2015,并围绕ASP.NET 5模板(MVC)进行了游戏,我看到视图中使用了一个名为ASP.NET 5 MVC(Visual Studio 2015):一个名为Inject的关键字,asp.net,asp.net-mvc,asp.net-core,Asp.net,Asp.net Mvc,Asp.net Core,我刚刚安装了visual studio 2015,并围绕ASP.NET 5模板(MVC)进行了游戏,我看到视图中使用了一个名为inject的关键字。它是用于依赖注入的吗?如果是,它是如何工作的?假设代码如下: [Authorize] public class AccountController : Controller { private readonly UserManager<ApplicationUser> _userManager; private reado
inject
的关键字。它是用于依赖注入的吗?如果是,它是如何工作的?假设代码如下:
[Authorize]
public class AccountController : Controller
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly IEmailSender _emailSender;
private readonly ISmsSender _smsSender;
private readonly ApplicationDbContext _applicationDbContext;
private static bool _databaseChecked;
public AccountController(
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
IEmailSender emailSender,
ISmsSender smsSender,
ApplicationDbContext applicationDbContext)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
_smsSender = smsSender;
_applicationDbContext = applicationDbContext;
}
//
// GET: /Account/Login
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
...
}
[授权]
公共类AccountController:控制器
{
私有只读用户管理器_UserManager;
专用只读签名管理器\u签名管理器;
私人只读IEmailSender\u emailSender;
私有只读ISmsSender(U SMSENDER);
私有只读应用程序上下文\u应用程序上下文;
检查私有静态bool_数据库;
公共账户控制员(
用户管理器用户管理器,
SignInManager SignInManager,
电邮发送者,
伊斯姆森德·斯姆森德,
应用程序上下文(应用程序上下文)
{
_userManager=userManager;
_signInManager=signInManager;
_emailSender=emailSender;
_smsSender=smsSender;
_applicationDbContext=applicationDbContext;
}
//
//获取:/Account/登录
[HttpGet]
[异名]
public IActionResult登录(字符串returnUrl=null)
{
ViewData[“ReturnUrl”]=ReturnUrl;
返回视图();
}
...
}
登录视图有一个注入关键字,如:
@model LoginViewModel
@inject SignInManager<ApplicationUser> SignInManager
@{
ViewData["Title"] = "Log in";
}
@model LoginViewModel
@注入SignInManager SignInManager
@{
ViewData[“Title”]=“登录”;
}
然而,我在其他视图中看不到这一点,在应用程序中也没有Ninject或Unity的痕迹。这是什么?一个新的惊人功能?Asp.net 5附带了内置的依赖项注入和许多相关功能。在您的示例中,您正在注入一个
SignInManager的实例,这是MVC-6中的一个新特性。如需了解更多详细信息,您是对的,它只是将服务注入到您的视图中。不需要Ninject、Unity等。ASP.NET5内置了依赖项注入。其他视图不需要使用任何注入对象,因此它们不使用它。