Определить режим отображения страницы sharepoint

Я задавал этот вопрос много раз, и мне было скучно, пока я пытался найти хорошее решение. Не понимаю, почему Microsoft не включает метод, который может легко определить режим отображения страницы: «нормальный дисплей» или «режим дизайна». У него есть много советов по проверке различных переменных, но он не может однозначно сказать, что страница в дизайне на разных типах страниц (страница веб-части и страница вики) и при обратной передаче или нет.

Наконец-то меня утомило, и я пишу это:

    public static bool IsDesignTime()
    {
        if (SPContext.Current.IsDesignTime) return true;

        if (HttpContext.Current.Request.QueryString["DisplayMode"] != null)
            return true;

        var page = HttpContext.Current.Handler as Page;

        if(page == null) return false;

        var inDesign = page.Request.Form["MSOLayout_InDesignMode"];
        var dispMode = page.Request.Form["MSOSPWebPartManager_DisplayModeName"];
        var wikiMode = page.Request.Form["_wikiPageMode"];
        var we = page.Request.Form["ctl00$PlaceHolderMain$btnWikiEdit"];

        if (inDesign == null & dispMode == null) return false; //normal display

        if (we == "edit") return true; //design on wiki pages

        if (page is WikiEditPage & page.IsPostBack & inDesign == "" & dispMode == "Browse" & wikiMode == "") return false; //display wiki on postback


        if (inDesign == "" & dispMode == "Browse" & (wikiMode == null | wikiMode == "")) return false; //postback in webpart pages in display mode

        if (inDesign == "0" & dispMode == "Browse") return false; //exiting design on webpart pages

        return true;
    }

Есть ли у кого-нибудь лучшее решение?

5
задан devi 9 April 2013 в 06:23
поделиться