UriTemplateMatch.BoundVariables Property
Gets the BoundVariables collection for the template match.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
Property Value
Type: System.Collections.Specialized.NameValueCollectionA NameValueCollection instance that contains template variable values extracted from the URI during the match.
Each template variable name appears as a name in this collection, and the value bound to that variable is stored under the corresponding name. The values in this collection have had all escape sequences translated into actual characters. This name value collection uses a case insensitive search when matching variable names.
The following code shows how to access the BoundVariables property.
UriTemplate template = new UriTemplate("weather/{state}/{city}?forecast=today"); Uri baseAddress = new Uri("http://localhost"); Uri fullUri = new Uri("http://localhost/weather/WA/Seattle?forecast=today"); Console.WriteLine("Matching {0} to {1}", template.ToString(), fullUri.ToString()); // Match a URI to a template UriTemplateMatch results = template.Match(baseAddress, fullUri); if (results != null) { // BaseUri Console.WriteLine("BaseUri: {0}", results.BaseUri); Console.WriteLine("BoundVariables:"); foreach (string variableName in results.BoundVariables.Keys) { Console.WriteLine(" {0}: {1}", variableName, results.BoundVariables[variableName]); } } // Code output: // BaseUri: http://localhost/ // BoundVariables: // state: wa // city: seattleConsole.WriteLine("BaseUri: {0}", results.BaseUri);
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Concerning multiple instances of a query parameter
If you run the following code snippet:
UriTemplate template = new UriTemplate("?id={id}");
UriTemplateMatch match = template.Match(new Uri("http://localhost"), new Uri("http://localhost?id=1&id=2&id=,,,&id=4"));
Console.WriteLine(match.BoundVariables["id"]);
You'll get the following output:
1,2,,,,,4
It appears to be combining multiple occurrences of a parameter into a CSV list, but it would be nice if the documentation specified the behaviour of this class in this case.
UriTemplate template = new UriTemplate("?id={id}");
UriTemplateMatch match = template.Match(new Uri("http://localhost"), new Uri("http://localhost?id=1&id=2&id=,,,&id=4"));
Console.WriteLine(match.BoundVariables["id"]);
You'll get the following output:
1,2,,,,,4
It appears to be combining multiple occurrences of a parameter into a CSV list, but it would be nice if the documentation specified the behaviour of this class in this case.
- 7/12/2010
- SheepNine