2009-03-01 109 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"