Отобразить представление по-разному в зависимости от опубликованного домена - PullRequest
0 голосов
/ 28 июня 2011

Mypage.cshtml имеет страницу и домен «xxx.com» и поддомен «test.xxx.com», который при публикации моего сайта в поддомене «test.xxx.com» отображает заголовок страницы что-то другое. Это было бы что-то вроде:

@if (--Request.IsSubDomain("test")--)
{ 
    <h1>Test page: Product</h1>
}
else
{ 
    <h1>Product</h1>
}

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Вы не хотели бы иметь этот логин в ваших представлениях. Я лично перенесу это в пользовательский атрибут или включил логику прямо в ваши контроллеры.

Кстати, в чем вопрос?

Edit:

Вы можете использовать Request.Url.Authority для определения домена.

0 голосов
/ 28 июня 2011

Обычно я не рекомендую использовать 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>
...