Я делаю MVC APP. У меня есть представление «Наследовать от модели» UserModel
, которые имеют 2 свойства. Имя пользователя и пароль. Я хочу сохранить эти значения в переменных сеанса, поэтому я использую ModelBinder
.MVC 5 Session Variable ModelBinder null для метода действия
Мое определение класса такое.
public class UserModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
Мое связующее устройство такое.
public class UserDetailModelBinder : IModelBinder
{
#region Constants
private const string SessionKey = "User";
#endregion
#region Public Methods and Operators
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
UserModel user = (controllerContext.HttpContext.Session != null) ? (controllerContext.HttpContext.Session[SessionKey] as UserModel) : null;
if (user == null)
{
user = new UserDetail();
controllerContext.HttpContext.Session[SessionKey] = user;
}
return user;
}
#endregion
}
И я определил должным образом в моем global.asax
Проблема, которую я нашел, что мой Action Method
, который получает UserModel
экземпляр из View является недействительным. Он читает, что уже имеет мою сессию вместо чтения, а затем сохраните ее в сеансе.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(UserModel model)
{
}
Я полагаю, это потому, что это та же модель я определил, чтобы сохранить в BinderModel
Итак, мой вопрос будет, как я могу сохранить в сессии, модель унаследует от View с помощью BinderModel?