以编程方式将webpart添加到User Profile页面

时间:2014-05-09 19:12:54

标签: c# sharepoint-2010 web-parts

我试图以编程方式将webpart添加到用户个人资料页面。我有这段代码:

using (SPSite site = new SPSite(SPContext.Current.Site.ID))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    try
                    {
                        web.AllowUnsafeUpdates = true;
                        string userPageUrl = web.Url + "/layouts/userdisp.aspx?force=true&id=" + web.CurrentUser.ID.ToString();
                        SPLimitedWebPartManager manager = web.GetLimitedWebPartManager(userPageUrl, PersonalizationScope.Shared);
                        ContentEditorWebPart cewp = new ContentEditorWebPart();
                        cewp.ID = "test";
                        cewp.Title = "test User Profile webpart title";
                        cewp.Description = "test User Profile description";
                        cewp.Content.InnerText = "USER INFORMATION";
                        manager.AddWebPart(cewp, "Main", 1);
                        manager.SaveChanges(cewp);
                    }
                    catch (Exception ex)
                    {
                        ex.ToString();
                    }
                }
            }

但它在创建SPLimitedWebPartManagerThe file http://localhost/layouts/userdisp.aspx?force=true&id=1 does not exist.

时会引发异常

当我尝试将此网址复制并粘贴到浏览器时,它可以正常工作。有什么麻烦?谢谢!

1 个答案:

答案 0 :(得分:1)

您无法编辑应用程序页面(位于_layouts虚拟目录中的页面)。

我能看到的唯一解决方案是configure user profile service。完成后,/_layouts/userdisp.aspx将不再用于显示用户个人资料,您将被重定向到"我的网站"用户个人资料页面,您可以编辑。

编辑:如果我没弄错的话你也需要configure "My Sites"