The buzz with "UrlQueryString" in SharePoint navigation
SharePoint's navigation APIs have a property exposed that allows us to set query string properties for a URL. Sadly, but not surprisingly, this only works when root site collection has publishing feature enabled. Reason is simple...
One a WSS only OR on a site where publishing feature is not enabled, the property "UrlQueryString" is not available in the default property enumeration of the navigation node's property collection. Run a simple code like the following
1: SPNavigationNodeCollection quickLaunchNodes = web.Navigation.QuickLaunch;
2: foreach (SPNavigationNode parentNode in quickLaunchNodes)
3: {
4: if (parentNode.Title.Equals("Lists"))
5: {
6: foreach (SPNavigationNode childNode in parentNode.Children)
7: {
8: Hashtable ht = childNode.Properties;
9: foreach (string key in ht.Keys)
10: {
11: MessageBox.Show(key);
12: }
13: }
14:
15: }
16: }
And you'll see the property collection returned on a WSS only OR a site where publishing feature is not enabled returns only one property "vti_navsequencechild" and it's value will be set to "True". Whereas when you enumerate this property bag on a publishing feature enabled site collection, you'll see at least 8 properties as show below
Count = 8
["vti_navsequencechild"]: "true"
["CreatedDate"]: {7/24/2008 11:16:59 AM}
["UrlQueryString"]: ""
["LastModifiedDate"]: {7/24/2008 11:58:52 AM}
["Audience"]: ""
["Target"]: ""
["Description"]: ""
["UrlFragment"]: ""
"UrlQueryString" is available as one of the properties to be set and so will take effect when set with a query string parameter value. On a site where publishing feature is not enabled, you'll still be able to set this property with a value, but there will be no effect in the UI. Yep! it doesn't sound good, but that's the way it is :(
Comments
- Anonymous
July 24, 2008
PingBack from http://blog.a-foton.ru/2008/07/the-buzz-with-urlquerystring-in-sharepoint-navigation/