Ich mache eine MVC APP. Ich habe eine View, die von Model Call UserModel
Erben, die 2 Eigenschaften haben. Benutzername und Passwort. Ich möchte diese Werte in Session-Variablen speichern, also verwende ich ModelBinder
.MVC 5 Sitzungsvariable ModelBinder null auf Aktionsmethode
Meine Klassendefinition ist wie folgt.
public class UserModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
Mein Modellbinder ist wie folgt.
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
}
Und ich habe definiert richtig in My global.asax
Das Problem, das ich gefunden ist, dass meine Action Method
, die eine UserModel
Instanz aus der Sicht erhält null ist. Es liest, was bereits meine Sitzung hat, anstatt die Ansicht zu lesen und dann in der Sitzung zu speichern.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(UserModel model)
{
}
Ich nehme an, es ist, weil es das gleiche Modell, das ich also in den BinderModel
zu speichern definiert, wäre meine Frage: Wie kann ich in Session speichern, ein Modell aus der Ansicht erbt mit BinderModel?