当我在母版页(<%: Session["companyname"].ToString() %>
)中显示会话值时,页面{ CompanyName = TestCompany}
上会显示以下信息。我如何获得价值?
感谢您的帮助!
答案 0 :(得分:5)
如果您可以显示会话中存储值的代码,那么我更有可能提供帮助。不过,我建议您可能需要重新考虑直接在视图中使用会话中的值。在我看来,最好有一个基本视图模型,所有视图模型都来自具有CompanyName属性的基础视图模型,以及主页面所需的任何其他常见属性。然后,您的母版页可以强类型化到基本视图模型,您可以使用模型中的值。我已经在几个项目中使用了这种模式并取得了很好的成功。将它与基本控制器耦合,其中为OnActionExecuted()
中的视图结果填充了公共属性,它在减少代码重复和在视图中使用魔术字符串方面都非常有效。 / p>
型号:
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>