Если вы можете показать код, в котором значение хранится в сеансе, скорее всего, я мог бы помочь. Я хотел бы предложить, однако, что вы можете пересмотреть использование значения из сеанса непосредственно в вашем представлении. На мой взгляд, было бы лучше иметь базовую модель представления, основанную на всех ваших моделях представления, которая имеет свойство 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>