可能题目的表达有点confuse,我先详细解释一下好了
项目里有一个需求,要将MySite 中的My profile页面定制。有两个方案:
1.在Page Library下新建一张全新的page作为默认的My profile页面,不知道在哪里设置。例如设置My Profile: http://xxxx/sites/test/pages/profile.aspx。 因为进入my profile的入口太多,没有一个统一的设置地点,改动代价太大。
2.修改默认Profile所在的 14\layouts\Person.aspx页面,这样的后果是影响范围无法控制,会影响server上所有站点。
我之前听说过一种solution是,把update操作放在feature里,只有激活了该feature的站点才会应用修改过了Person.aspx页面,其他站点仍然使用MS提供的Person.aspx。
虽然我不知道这个是怎么实现的,但是我觉得是可行的,类似于SharePointDesigner中修改Master Page,系统实际创建了一个ghost page,你的改动只在这个ghost page上生效,不会修改到Master page默认的定义。
我的问题是,怎么通过c#代码实现类似于SPD中的这种效果?
------解决方案--------------------
不知道这个对你有没有帮助:
http://fangdahai.blogspot.in/2013/01/how-to-change-my-site-host-url.html
------解决方案--------------------
feature 有个设置。你在写代码部署的时候指定一个范围。
------解决方案--------------------
自己弄个Feature,Feature激活的时候,将你修改的文件上传到某个路径,通过Code取到那个文件流,然后再将这个流覆盖Person.aspx,这样Person.aspx就有自己的文件流了,不影响其他的Site。