이 방법은 컨트롤러에 대한 조치 실행을 처리 할 액션 필터 속성 클래스를 사용합니다. 먼저 새로운 액션 필터 클래스를 생성하고 원하는 모든 것을 호출해야하지만 ActionFilterAttribute 클래스에서 상속하게해야합니다. 그런 다음 ActionExecutedContext 인수로 오버라이드 OnActionExecuted 방법을 추가해야합니다 : 다음
public class BaseViewModel()
{
public string UserName {get;set;}
}
:
public class ExampleActonFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
BaseViewModel model = filtercontext.Controller.ViewData.Model;
if (filterContext.Controller.ControllerContext.HttpContext.Session["UserName"] != null)
{
model.UserName = filterContext.Controller.ControllerContext.HttpContext.Session["UserName"];
}
}
}
다음, 당신은 당신의 레이아웃 페이지는 문자열로 이름을 복용 공공 문자열 매개 변수와 뷰 모델을 가지고 레이아웃 페이지에 값이 null이 있는지 확인하기 위해 (당신이이 그려 질 싶습니다) 간단한 체크를해야하고, 그렇지 않은 경우는, 그래서처럼 그릴 :
if (string.IsNullOrWhiteSpace(@Model.UserName))
{
<span>@Model.UserName</span>
}
이제 사용자 이름을 표시하려는 모든보기에서 해당 페이지에 대한 ViewModel을 BaseViewModel 클래스에서 상속 받아 표시하고 싶을 때 사용자 이름을 세션 변수로 설정하면됩니다.
는 SO 세션 변수에 대한 자세한 내용은 게시 이것 좀 유무 : here
난이 도움이되기를 바랍니다!
세션을 시도했지만 다른보기 (페이지)에서 작동하지 않습니다. 로그인 페이지의 사용자 이름 필드에 사용자가 입력 한 값을 유지하려고합니다. 나는 어떤 종류의 인증도 사용하지 않고있다. 이게이 시나리오에서 효과가 있을까요? – ElectricRouge
어쩌면 쿠키? – VladL
견본을 제공해 주시겠습니까? – ElectricRouge