Обычно я не рекомендую использовать ViewBag
, но если вы только хотите использовать это для визуализации заголовка, создайте подкласс для ваших контроллеров из родительского контроллера, скажем, GeneralController
и установите ViewBag.Title
собственность там основана на домене.
Одной альтернативой этому является создание подклассов любых моделей представлений из модели базового представления, включая аналогичную логику.
public class GeneralController
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if(HttpContext != null)
ViewBag.Title = GetRequestPath();
}
private string GetRequestTitle()
{
if(HttpContext.Request.Path.Contains("test.xxx"))
return "Test site";
}
}
Тогда любой контроллер и впоследствии визуализированные представления смогут использовать это свойство ViewBag.Title. Фактически, из коробки MVC3 включает _Layout.cshtml
в качестве макета по умолчанию (или главной страницы), который уже содержит следующую строку в заголовке:
<title>@ViewBag.Title</title>