Zaf*_*iro 0 asp.net-mvc asp.net-mvc-2
当我在母版页(<%: Session["companyname"].ToString() %>)中显示会话值时,页面上会显示以下信息{ CompanyName = TestCompany}.我如何获得价值?
谢谢你的帮助!
如果您可以显示会话中存储值的代码,那么我更有可能提供帮助.不过,我建议您可能需要重新考虑直接在视图中使用会话中的值.在我看来,最好有一个基本视图模型,所有视图模型都来自具有CompanyName属性的基础视图模型,以及主页面所需的任何其他常见属性.然后,您的母版页可以强类型化到基本视图模型,您可以使用模型中的值.我已经在几个项目中使用了这种模式并取得了很好的成功.将它与基本控制器耦合,其中填充了公共属性以用于查看结果OnActionExecuted(),它可以非常有效地减少代码重复和在视图中使用魔术字符串.
模型:
public abstract class CommonViewModel
{
public string CompanyName { get; set; }
public string UserDisplayName { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
控制器:
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
母版页:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<Foo.CommonViewModel>" %>
<!-- ... -->
<div>
<%: Model.CompanyName %>
</div>
<!-- ... -->
<div>
<%: Model.UserDisplayName %>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2154 次 |
| 最近记录: |