SharePoint判断页面(或WebPart)是否处于编辑模式.

相信大家经常进行编辑(配置)WebPart的属性等操作.

有些时候,在我们配置属性的时候,可能我们会希望这个时候,页面上的webpart区域显示其它内容或提示信息.

那我们如何判断我们是不是在编辑模式中呢?

可能大家知道这样一个小窍门:在URL中加上DisplayMode=Design就可以让当前页面进入设计模式.

那我们可以通过判断DisplayMode及其值来判断当前页面是否处于编辑模式中.

但是:如果我们通过点击"编辑页面"进入的话,将不会有这个查询参数存在在URL中.

----

不知道 SharePoint有没有提供相关的API给我们操作,反正我是没有找到.反而是找到几个相关的东东:
WebPart中有个事件处理方法:OnEditModeChanged,很可能的是,事件参数是EventArgs,并没有指明当前页面是否正处于编辑模式中?

而WebPartManage有两个方法:BeginWebPartEditing和EndWebPartEditing,同样很可惜,也没有直接指明是不是在编辑中.

没办法,走偏方:

每一个模式下,我们都可以发现HTML源码中,都有MSOSPWebPartManager_DisplayModeName这个隐藏域. 而在不同的模式下,其值是不一样的:

  浏览:Browse   页面编辑:Design  WebPart编辑:Edit

OK,足够了,这3个值再加上DisplayMode,足够我们折腾的了.

<---题外:在HTML源码中,还有不少值得我们研究的东东,也许一些感觉棘手的问题,答案就在其中-->

----

折腾完后,我搞出这样一个方法:
 

复制代码
 1         public bool CheckIsEditing()
 2         {
 3             //if (null == this.Page.Request["MSOLayout_InDesignMode"])
 4             //    return false;
 5             //string strMode = this.Page.Request["MSOLayout_InDesignMode"].ToLower().Trim();    
 6             //if (strMode == "1")
 7             //    return true;
 8             //return false;
 9             if (!string.IsNullOrEmpty(Page.Request["DisplayMode"]) && Page.Request["DisplayMode"].ToLower().Trim() == "design")
10                 return true;
11             if (null == this.Page.Request["MSOSPWebPartManager_DisplayModeName"] )
12                 return false;
13             string strMode = this.Page.Request["MSOSPWebPartManager_DisplayModeName"].ToLower().Trim();    
14             if (strMode == "browse")
15                 return false;  
16             if (strMode == "design" || strMode=="edit")
17                 return true;
18             return false;
19         
20         }
复制代码

 

 

不知道些方法好不好用,先记录在些,权当记流水帐了.

 ----话说:深圳的天气真TMD热,而我等P民买不起空调,只有天天蒸桑拿!!!!

posted @   mcjeremy  阅读(2314)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
------------------------------------ 心静似高山流水不动,心清若巫峰雾气不沾 ------------------------------------
点击右上角即可分享
微信分享提示