后台代码修改Webpart属性无法保存
背景:一个继承System.Web.UI.WebControls.WebParts的Webpart需要根据requert传进来的参数修改webpat标题,CreateChildControls中代码如下
1: if (string.IsNullOrEmpty(this.Page.Request["rebuildurl"]))
2: {
3: Title = this.Page.Request["rebuildurl"].Trim();
4: //base.SetPersonalizationDirty();
5: //Description = "点击查看更多信息";
6: }
结果发现URl去掉参数后,Webpart标题又恢复到原来状态,this.Title的值并没有保存下,查了一个上午终于找到一篇文章提到这问题
When does custom properties of a web part get saved?
里面提到需要使用base.SetPersonalizationDirty();指示个性化数据已经修改,茅塞顿开!
1: if (string.IsNullOrEmpty(this.Page.Request["rebuildurl"]))
2: {
3: Title = this.Page.Request["rebuildurl"].Trim();
4: base.SetPersonalizationDirty();
5: //Description = "点击查看更多信息";
6: }
备注:上面的方法在继承System.Web.UI.WebControls.WebParts的webpart上有效,
继承自
Microsoft.SharePoint.WebPartPages.WebPart的webpart有一个
SaveProperties属性,应该能实现同样的功能,可参考