在我将我的类注入到控制器的每个动作中之前。使用此 ModelBinder 方法:
public class AccountViewModelBinder: IModelBinder
{
private const string sessionKey = "Account";
private readonly IViewModelFactory _viewModelFactory;
public AccountViewModelBinder(IViewModelFactory viewModelFactory)
{
_viewModelFactory = viewModelFactory;
}
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
// get the Cart from the session
AccountViewModel account = (AccountViewModel)controllerContext.HttpContext.Session[sessionKey];
if (account == null)
{
account = _viewModelFactory.CreateAccountVm();//new Cart();
controllerContext.HttpContext.Session[sessionKey] = account;
}
return account;
}
}
控制器动作:
public ActionResult Index(HomeViewModel homeVm, AccountViewModel accountVm)
{
//do something here...
return View();
}
但我认为一次又一次地对每个动作都这样做是很混乱的,因为对于一个控制器来说总是一样的。
那么,如何使用 ninject 将会话相关的类注入到控制器构造函数中。我已经可以将类注入控制器构造函数,但不能注入与会话相关的类。