如何“正確”爲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”。

image

當我們在Visual Studio 2010中開發SharePoint應用程序時,也可以通過VS內置的SharePoint Explorer來查看一個字段的詳細信息。在VS2010的“服務器資源管理器”中點擊“添加SharePoint連接”,就能打開一個SharePoint網站。

image

通過展開列表節點,就能直接查看列表的所有字段,以及字段的各種屬性。內部名稱這個屬性也能直接看到。

image

但是當管理員創建一個字段時,在頁面UI上並不能分別輸入新字段的標題和內部名稱。在新建字段的界面上,只有一個“欄名”文本框。

image

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

比如,如果管理員使用頁面UI創建一個標題爲“Live ID”的字段,這個字段的內部名稱會被自動命名爲“Live_x0020_ID”。如果管理員創建一個標題爲“技術等級”的字段,它的內部名稱將是“_x6280__x672f__x7b49__x7ea7_”。

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

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

image

這時,這個字段的標題,和內部名稱,都將是“TechLevel”。

image

然後,在界面上將這個字段名稱修改爲“技術等級”。這樣,用戶將看到這個字段的名字叫做“技術等級”,但由於字段的內部名稱會始終保持原始值,所以這個字段的內部名稱仍然爲“TechLevel”。

image

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

image

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章