Перенаправление страницы без изменения URL-адреса Umbraco | C#

У меня есть два шаблона в Umbraco. Один для настольного компьютера, а другой для мобильного. У меня есть небольшой скрипт, который обнаруживает пользовательский агент запроса и перенаправляет пользователя соответственно.

Если запрос сделан с рабочего стола, пользователь перенаправляется на шаблон рабочего стола с URL www.abc.com,

Если запрос сделан с мобильного, пользователь перенаправляется на мобильный шаблон с URL www.abc.com/?alttemplate=mobilehomepage

Как сделать URL одинаковым как для настольного компьютера, так и для мобильного.

я использую Response.Redirect для перенаправления.

Заранее спасибо.

2 ответа

Решение

Все решения по шаблонам umbraco выполняются через default.aspx(.cs), и программно вы можете изменить шаблон, переопределив метод Page PreInit.

Вот как я добился этого в файле default.aspx.cs с шаблонами templatenameMobile, templatenameDesktop и templateNameTablet. Очевидно, вам нужны методы для определения того, работаете ли вы на мобильном устройстве, планшете или настольном компьютере (что вы можете определить из пользовательского агента):

        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);

            string userAgent = Request.UserAgent;
            bool isTablet = IsTablet(userAgent);
            bool isMobile = IsMobile(userAgent);

            int templateId = umbraco.NodeFactory.Node.GetCurrent().template;
            umbraco.template template = new umbraco.template(templateId);
            string templateName = StripDevice(template.TemplateAlias);

            if (isTablet)
            {
                Page.MasterPageFile = GetTabletMaster(templateName);
            }
            else if (isMobile)
            {
                Page.MasterPageFile = GetMobileMaster(templateName);
            }
            else
            {
                Page.MasterPageFile = GetDesktopMaster(templateName);
            }

}

    public string GetMobileMaster(string templateName)
    {
        try
        {
            MasterPage masterPage = new MasterPage();
            masterPage.MasterPageFile = string.Format("/masterpages/{0}mobile.master", templateName);
            if (masterPage == null)
            {
                masterPage.MasterPageFile = string.Format("/masterpages/{0}desktop.master", templateName);
            }
            if (masterPage == null)
            {
                return Page.MasterPageFile;
            }
            else
            {
                return masterPage.MasterPageFile;
            }
        }
        catch (Exception ex)
        {
            umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Error, umbraco.BusinessLogic.User.GetUser(0), -1, "Switch template to MOBILE fail " + templateName + " : " + ex.Message);
            return Page.MasterPageFile;
        }
    }

Вы можете попробовать использовать UrlRewriting. Это входит в Umbraco. Попробуйте поиграть с config\UrlRewriting.config

Вот документация:

http://www.urlrewriting.net/160/en/documentation/documentation/documentation/documentation/documentation/documentation.html

Другие вопросы по тегам