URL displaying %20 for spaces

In IE browser and some other browsers The URL is dispaying "%20" for spaces.

Passing date, month and headline in a query string (attached code).

In the headline text, it strips the space and replaces it with %20. Why so??Any help

How can I fix this thing.

Would appreciate any help!

 

Thanks!
private void RenderRelease(HtmlTextWriter xwriter, PressRelease release) {
			if (xwriter == null) {
				throw new ArgumentNullException("xwriter");
			}
 
			if (release == null) {
				throw new ArgumentNullException("release");
			}
 
			xwriter.RenderBeginTag(HtmlTextWriterTag.Li);
 
			parms[0] = release.Dateline.Year.ToString(cc);
			parms[1] = release.Dateline.ToString("MMMM",cc);
			parms[2] = release.Headline;
 
			HyperLink link = new HyperLink();
			link.NavigateUrl = FormatHyperlink(PageConstants.PagePressReleaseDetail, false, parms);
			link.Text = release.Headline;
			link.CssClass = "pressRelease";
			link.RenderControl(xwriter);
 
			xwriter.AddAttribute(HtmlTextWriterAttribute.Class, "date");
			xwriter.RenderBeginTag(HtmlTextWriterTag.Span);
			xwriter.WriteEncodedText(String.format(NewsDateForamtString, release.Dateline));
			xwriter.RenderEndTag();		// span
 
			xwriter.RenderEndTag();		// li
		}

Open in new window

newaspdotnetAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
burakiewiczConnect With a Mentor Commented:
that is the html encoding for a space

to set the text use this
headline.Text=HttpUtility.HtmlDecode(strHeadline)
0
 
MidnightOneCommented:
URLs cannot contain spaces, and therefore puts int he hexadecimal code for space %20 (32 decimal).
0
 
newaspdotnetAuthor Commented:
I changed this line of code.

parms[2] = HttpUtility.HtmlDecode(release.Headline);

link.NavigateUrl = FormatHyperlink(PageConstants.PagePressReleaseDetail, false, parms);


Passing this link url as query string.
But this didnt help!

Am I doing this right?
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
burakiewiczCommented:
you need to change it where you set the text or if you have a setter.
You will need to decode it before you use it as text
release.Headline=HttpUtility.HtmlDecode(release.Headline);

or
HyperLink link = new HyperLink();
link.NavigateUrl = FormatHyperlink(PageConstants.PagePressReleaseDetail, false, parms);
link.Text = HttpUtility.HtmlDecode(release.Headline);
link.CssClass = "pressRelease";
link.RenderControl(xwriter);
0
 
burakiewiczCommented:
the navigate url will always have  %20 for a space
0
 
newaspdotnetAuthor Commented:
Thanks alot for your help dear!

But I tried doing it both ways you mentioned.

It still gives %20 in the url. :(

Any other way I can try to work this out???


URLSPACE.jpg
0
 
newaspdotnetAuthor Commented:
Hey we are already using this in format hyperlink method!!!!!!
My bad I didnt debug it properly earlier.

But now if we are already using "HttpUtility.UrlEncode(argList[i])" then this problem should not be there.

Would really appreciate any help!

public static string FormatHyperlink(string destination, bool useQueryStringParams, params string[] args)
		{
			if (StringHelper.IsNullEmptyOrSpaces(destination))
			{
				throw new ArgumentNullException(destination);
			}
 
			Page p = HttpContext.Current.CurrentHandler as Page;
			if (p != null)
			{
				destination = p.ResolveUrl(destination);
			}
 
			System.Text.StringBuilder result = new System.Text.StringBuilder(destination);
 
			System.Collections.Specialized.StringCollection argList = new System.Collections.Specialized.StringCollection();
			argList.AddRange(args);
			if (useQueryStringParams)
			{
				result.Append("?");
				if (argList.Count % 2 != 0)
				{
					throw new ArgumentOutOfRangeException("args");
				}
 
				for (int i = 0; i < argList.Count - 1; i = i + 2)
				{
					result.AppendFormat("{0}={1}&", HttpUtility.UrlEncode(argList[i]), HttpUtility.UrlEncode(argList[i + 1]));
				}
				result.Remove(result.Length - 1, 1);
			}
			else
			{
				for (int i = 0; i < argList.Count; i++)
				{
					result.AppendFormat("/{0}", HttpUtility.HtmlEncode(argList[i]));
				}
			}
 
			return result.ToString();
		}

Open in new window

0
 
newaspdotnetAuthor Commented:

I just changed the following line: result.AppendFormat("/{0}", HttpUtility.HtmlEncode(argList[i]));

TO:

for (int i = 0; i < argList.Count; i++)
                {
                    result.AppendFormat("/{0}", HttpUtility.UrlEncode(argList[i]));
                }

Instead of HtmlEncode I used UrlEncode. It changes %20 to '+' but now I get following error when I click on the hyperlink control....

Did I do something wrong???

Description: The request filtering module is configured to deny a request that contains a double escape sequence.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.