커스텀 모델 바인더가 있는데 인증 쿠키를 확인하고 값을 반환합니다.어떻게 MVC3 마스터 페이지 (_ 레이아웃)에 값을 전달합니까?
public class UserDataModelBinder<T> : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext.RequestContext.HttpContext.Request.IsAuthenticated)
{
var cookie =
controllerContext.RequestContext.HttpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie == null)
return null;
var decrypted = FormsAuthentication.Decrypt(cookie.Value);
if (!string.IsNullOrWhiteSpace(decrypted.UserData))
return JsonSerializer.DeserializeFromString<T>(decrypted.UserData);
}
return null;
}
}
만약 내가 그것을 사용해야한다면, 나는 그것을 행동에 전달할 필요가있다. 모든 것이 작동합니다.
public ActionResult Index(UserData userData)
{
AccountLoginWidgetVM model = new AccountLoginWidgetVM();
if (null != userData)
model.UserData = userData;
return View(userData);
}
그러나 일단 사용자 로그인을하면 모든 페이지의 상단에 정보를 표시하기 때문에 마스터 페이지에서 사용하고 싶습니다. 나는 몇 가지를 시도 다음과 같이 우리는 그것을했다가
@Html.RenderPartial("LoginPartial", ???model here??)
보기에 모델 선언을 포함 시켰습니까? – Yasser