마스터 페이지 (<%: Session["companyname"].ToString() %>
)에 세션 값을 표시하면 다음 정보가 페이지 { CompanyName = TestCompany}
에 표시됩니다. 가치를 얻으려면 어떻게해야합니까?ASP.Net MVC 마스터 페이지에 세션 값 표시
도움 주셔서 감사합니다.
마스터 페이지 (<%: Session["companyname"].ToString() %>
)에 세션 값을 표시하면 다음 정보가 페이지 { CompanyName = TestCompany}
에 표시됩니다. 가치를 얻으려면 어떻게해야합니까?ASP.Net MVC 마스터 페이지에 세션 값 표시
도움 주셔서 감사합니다.
값이 세션에 저장되는 위치에 코드를 표시 할 수 있다면 내가 도울 수있는 가능성이 더 높습니다. 그래도 세션에서 직접 값을 사용하여 재검토하고 싶을 수도 있습니다. 필자의 의견으로는 모든 뷰 모델이 CompanyName 속성과 마스터 페이지에서 요구하는 기타 공통 속성을 가진 기본 뷰 모델을 갖는 것이 좋습니다. 그러면 마스터 페이지가 기본보기 모델에 강력하게 입력 될 수 있으며 모델의 값을 사용할 수 있습니다. 나는이 패턴을 몇 가지 프로젝트에서 성공적으로 사용했다. 공통 속성이보기 결과에 대해 채워지는 기본 컨트롤러와 함께 사용하면 OnActionExecuted()
으로 코드 복제를 줄이고 마법 문자열을 사용하면 매우 효과적 일 수 있습니다.
모델 :
public abstract class CommonViewModel
{
public string CompanyName { get; set; }
public string UserDisplayName { get; set; }
...
}
컨트롤러 :
public abstract class BaseController
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Result is ViewResult)
{
var model = filterContext.ViewData.Model as CommonViewModel;
if (model != null)
{
model.CompanyName = Session["CompanyName"] as string;
model.UserDisplayName = Session["UserDisplayName"] as string;
}
}
}
}
마스터 페이지 :
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Foo.CommonViewModel>" %>
<!-- ... -->
<div>
<%: Model.CompanyName %>
</div>
<!-- ... -->
<div>
<%: Model.UserDisplayName %>
</div>
당신이 값이 세션에 저장되어있는 코드를 게재 할 수 있습니까? – tvanfosson
'Session [ "companyname"]'에 저장된 객체는'string'이 아니지만 커스텀'.ToString()'오버라이드를 구현 한 클래스로 만들어 졌다고 말할 수 있습니다. – hangy
@hangy - 나는 익명의 객체를 의심하지만 코드가 없으면 알기 어렵습니다. – tvanfosson