我想在AccountController上使用依赖注入,但我在登录时收到此错误“没有为此对象定义无参数构造函数”。这是一种在登录时使用依赖注入的真正方法。很多人在登录时使用此方法控制。
public interface IAuthProvider {
bool Authenticate(string username, string password);
}
public class AccountController : Controller {
IAuthProvider authProvider;
public AccountController(IAuthProvider auth) {
authProvider = auth;
}
public ViewResult Login() {
return View();
}
[HttpPost]
public ActionResult Login(LoginViewModel model, string returnUrl) {
if (ModelState.IsValid) {
if (authProvider.Authenticate(model.UserName, model.Password)) {
return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
} else {
ModelState.AddModelError("", "Incorrect username or password");
return View();
}
} else {
return View();
}
}
}
答案 0 :(得分:1)
我猜你正在使用Unity。如果是这样,您不需要无参数构造函数。注册实例时,您应使用InjectionConstructor。有了这个Unity就可以解析正确的构造函数。