It contstruct link with querystring like StringBuilder.
Here is it code and unit test which describes how to use it.
QueryStringBuilder:
///
/// Build links with querystring.
///
public class QueryStringBuilder
{
private readonly DictionaryqueryStringParameters = new Dictionary ();
private readonly string targetPageLink;
private QueryStringBuilder()
{
}
///
/// Constructor
///
public QueryStringBuilder(string targetPageLink)
{
this.targetPageLink = targetPageLink;
}
///
/// Add parameter to querystring.
///
public void AddParameter(string parameterName, string parameterValue)
{
if (queryStringParameters.ContainsKey(parameterName))
{
queryStringParameters[parameterName] = parameterValue;
}
else
{
queryStringParameters.Add(parameterName, parameterValue);
}
}
///
/// Gets target page link with querystring.
///
///Targe page link with querystring.
public override string ToString()
{
var stringBuilder = new StringBuilder();
stringBuilder.Append(targetPageLink);
int parametersCounter = 1;
foreach (var pair in queryStringParameters)
{
if (parametersCounter == 1)
{
stringBuilder.AppendFormat("?{0}={1}", pair.Key, pair.Value);
}
else
{
stringBuilder.AppendFormat("&{0}={1}", pair.Key, pair.Value);
}
parametersCounter++;
}
return stringBuilder.ToString();
}
}
QueryStringBuilderTest:
[Fact]
public void BuildLinkWithQueryString()
{
var queryStringBuilder = new QueryStringBuilder("http://localhost/");
queryStringBuilder.AddParameter("ProductId", "111");
queryStringBuilder.AddParameter("CustomerId", "23");
Assert.Equal("http://localhost/?ProductId=111&CustomerId=23", queryStringBuilder.ToString());
queryStringBuilder.AddParameter("ProductId", "131");
Assert.Equal("http://localhost/?ProductId=131&CustomerId=23", queryStringBuilder.ToString());
}
