2009-03-01 133 views
3

我在SharePoint网站中创建了自定义列表,并使用SharePoint Solution Generator生成了Visual Studio 2008项目。我可以将其作为一项功能进行打包并安装。它在我的服务器上运行良好。SharePoint - 如何在自定义功能中自定义NewForm.aspx?

经过测试,我已经能够将自定义masterpage添加到部署到_catalogs/masterpage文件夹的功能。这里是:

<Elements Id="2196306F-3F37-40b5-99CF-42E89B93888A" xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Module Name="DefaultMasterPage" Url="_catalogs/masterpage" RootWebOnly="FALSE"> 
     <File Url="gcbranding.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" /> 
    </Module> 
</Elements> 

既然我在我的网站有一个自定义的母版页,我希望有这用于创建新的项目。但我不想从SharePoint Designer设置主设备。

回到生成的解决方案,它具有NewForm.aspx等列表模式。我如何......

  1. 自定义显示的新项目,形式,并把它重定向到一个thankyou.aspx页而不是显示所有列表项?
  2. 将url设置正确吗?

我迷失在第1点。我是否需要创建自定义web部件并将其嵌入到NewForm.aspx中?

在第2点我已经取得了一些进展,但遇到了问题。如果我这样设置在我NewForm.aspx主...

MasterPageFile="~/masterurl/gcmaster.master" 

它将安装好的,但是当我打的网站,我得到一个错误,因为〜是不是在URL中不允许的。如果我在指令中使用_catalogs/masterpage,它将不会找到主设备,因为该URL是相对的。仅此代码似乎工作:

MasterPageFile="../../_catalogs/masterpage/gcmaster.master" 

什么是设置在SharePoint母版页文件,部署自定义功能/解决方案时的最佳实践方法是什么?

回答

2

Re主页:我想你想'~masterurl/gcmaster.master'。 “〜”和“主”之间没有“/”。

Re NewForm:您可以为NewForm.aspx创建自己的代码隐藏页面,将Inherits属性更改为您自己的类。我想我会先让我的自定义代码从SharePoint.SharePoint.WebPartPages.WebPartPage继承,然后从那里继续。

0
这样做是在SharePoint Designer中打开NewForm.aspx,改变

的最佳方式:

的MasterPageFile = “〜masterurl/default.master”

的MasterPageFile =“〜masterurl/custom.master“

这显然会编辑当前的实例,但是如果您想要使用站点def或功能来部署它,那么您需要在列表实例的schema.xml文件中创建和NewForm.aspx页面夹。

希望有所帮助。

1

自定义为新项目显示的表单,并将其重定向到谢谢。aspx页面而不是显示所有列表项目?

最简单的答案是,更改“添加新项目”链接,为您的感谢页面添加源URL。例如,而不是(我不得不离开了HTTP):

 
www.yoursite.com/Lists/Links/NewForm.aspx 

将其更改为:

 
www.yoursite.com/Lists/Links/NewForm.aspx?Source=www.yoursite.com/ThankYou.aspx 

当用户单击从NewForm页面提交,他们将被重定向到三江源的.aspx。

但是,您可能必须使用SharePoint Designer来更改链接。

0

覆盖网页上的OnPreInit事件,并在那里把这个行:

this.MasterPageFile = SPContext.Current.Web.CustomMasterUrl; 

(如果你使用自定义母版页)

如果您使用的是默认的主页面,请使用以下行:

this.MasterPageFile = SPContext.Current.Web.MasterUrl; 

HTH,

詹姆斯

+0

我忘了提及:部署的母版页已被设置为自定义或默认主页面。这发生在功能激活阶段,您必须实现一个继承的SPFeatureReceiver类来执行此操作。当然,SPFeatureReceiver子类必须在feature.xml文件中设置。 – code4life 2009-11-20 19:48:54

0

如果您想在各种.aspx页面上重复使用母版页,那么最好将其设置为自定义母版页。 WSS中没有页面可让您轻松完成此操作,因此您最好在SharePoint Designer中右键单击_catalogs/masterpage/gcmaster.master文件,然后选择设为自定义主页面,或通过PowerShell将其设置在服务器上(脚本的SharePoint头可在这里:http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=7

$web = Get-SPWeb("http://mysiteurl") 
$web.CustomMasterUrl = "_catalogs/masterpage/gcmaster.master" 
$web.Update() 

然后在你的.aspx页面中的@Page指令,你可以设置:

MasterPageFile="~/masterurl/custom.master" 

记住,这使得所有的.aspx页面引用“〜/ masterurl/custom.master”的网站使用您的gcmaster.master页面。

或者,你可以跳过这一切,为你的.aspx页面简单地包括@ Page指令看起来像这样:

MasterPageFile="~/site/_catalogs/masterpage/gcmaster.master"