天天看點

如何“正确”為SharePoint字段命名

當大家需要擴充一個SharePoint清單/文檔庫的資料結構時,就會為清單/文檔庫建立新的字段(欄)。不管是直接為清單/文檔庫建立字段,還是在網站集裡面建立網站欄,作為管理者,最好使用一些“最佳實踐”來為字段命名。使用正确的字段名,在未來的配置、管理、開發過程中,都可以節省很多的時間和精力。

每個SharePoint字段實際上有兩個名稱,一個是“标題”(Title,有時候也把它叫做“顯示名稱”),一個是“内部名稱”(Internal Name)。平時使用者在清單視圖界面上看到的,都是字段的标題。字段的内部名稱可以看作是字段的唯一辨別。如果你曾經使用SharePoint對象模型,通過代碼從清單中擷取資料,那麼對“内部名稱”這個概念一定很熟悉。基本上,SharePoint對“内部名稱”的格式有非常嚴格的要求,它隻能由英文字母、數字和下劃線字組成,且不能包含空格。但是“标題”則沒有這麼多限制,通常我們會使用中文作為字段的“标題”,而且“标題”中很可能會包含空格。當一個字段被建立之後,它的“内部名稱”就被固定下來了,但是“标題”則可以在之後被随時修改。

var list = site.Lists["任務"]; 

var titleField = list.Fields.GetFieldByInternalName("Title"); // 使用字段的内部名稱來擷取一個字段 

var statusField = list.Fields.GetField("狀态"); // 使用字段的标題來擷取一個字段,注意,GetField()會先嘗試内部名稱,然後再嘗試使用标題進行查找

怎麼知道一個字段的内部名稱呢?最簡單的方法就是對一個字段進行編輯,然後觀察浏覽器位址欄中的URL位址。比如,當我們編輯“狀态”字段時,在位址欄就能看到一個“Field=Status”參數,這表示“狀态”字段的内部名稱是“Status”。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789479uMiI.png"></a>

當我們在Visual Studio 2010中開發SharePoint應用程式時,也可以通過VS内置的SharePoint Explorer來檢視一個字段的詳細資訊。在VS2010的“伺服器資料總管”中點選“添加SharePoint連接配接”,就能打開一個SharePoint網站。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789483mgqG.png"></a>

通過展開清單節點,就能直接檢視清單的所有字段,以及字段的各種屬性。内部名稱這個屬性也能直接看到。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789484aGwH.png"></a>

但是當管理者建立一個字段時,在頁面UI上并不能分别輸入新字段的标題和内部名稱。在建立字段的界面上,隻有一個“欄名”文本框。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789484mE2C.png"></a>

SharePoint系統會使用管理者輸入在“欄名”文本框内的内容作為新字段的标題,然後根據這個标題,調用System.Xml.XmlConvert.Encode()方法,來将标題自動轉換成内部名稱。這樣,才能讓轉換後的内部名稱符合SharePoint對内部名稱命名的規範。

比如,如果管理者使用頁面UI建立一個标題為“Live ID”的字段,這個字段的内部名稱會被自動命名為“Live_x0020_ID”。如果管理者建立一個标題為“技術等級”的字段,它的内部名稱将是“_x6280__x672f__x7b49__x7ea7_”。

但是這種自動轉換後的内部名稱的格式非常不好看,也不易記憶。實際上,管理者應該始終使用一個符合内部名稱規範的名稱,來建立字段,這樣這個新字段的内部名稱和标題都相同。然後,管理者再回過頭去修改這個字段,将其标題修改為更符合使用者習慣的名字。由于内部名稱一旦确定就不再更改,是以字段的内部名稱将始終保持為初始值。

比如,我們要建立一個“技術等級”字段。最好的方法,是使用“TechLevel”為名,來建立一個字段。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789485P4bt.png"></a>

這時,這個字段的标題,和内部名稱,都将是“TechLevel”。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789487jYbt.png"></a>

然後,在界面上将這個字段名稱修改為“技術等級”。這樣,使用者将看到這個字段的名字叫做“技術等級”,但由于字段的内部名稱會始終保持原始值,是以這個字段的内部名稱仍然為“TechLevel”。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789490ckJi.png"></a>

如果我們要在代碼裡面建立新字段,也應該使用類似的方法。

<a href="http://kaneboy.blog.51cto.com/attachment/201109/23/1308893_1316789493pHOf.png"></a>

為字段命名一個好記、易識别的内部名稱,無論是在我們的自定義代碼中,還是在SharePoint Search裡面,都要或得更好的便利性。

本文轉自 kaneb0y 51CTO部落格,原文連結:http://blog.51cto.com/kaneboy/672480,如需轉載請自行聯系原作者

繼續閱讀