ASP.NET Server Tag Not Parsing in URL Field


I'm banging my head against a wall here, and I'm sure this is a simple syntax issue.  I am working with a ListView control, and I'm trying to construct a hyperlink that parses a datafield into the query string of a URL (the page that is being called in the URL serves the image data from the provided filename back as a filestream because the image being called resides in a location outside the application folder.)

<asp:HyperLink	runat="server"
		NavigateUrl='~/ServeFFAttachment.aspx?FileName=<%# Eval("ATTACHMENT_PATH") %>'
	<%# Eval("ATTACHMENT_DESC") %>

Open in new window

The server doesn't choke on the code, but the URL that gets associated with the hyperlink isn't evaluating the server tag (see below.)

http://serverfqdn:55555/ServeFFAttachment.aspx?FileName=<%# Eval("ATTACHMENT_PATH") %>

Open in new window

I should point out that this worked fine before I added the ASPX page to the URL (code below worked...)

<asp:HyperLink	runat='server'
		NavigateUrl='<%# Eval("ATTACHMENT_PATH") %>'
	<%# Eval("ATTACHMENT_DESC") %>

Open in new window

Why does adding "~/ServeFFAttachment.aspx?FileName=" before the Server Tag mess it up??

HELP!!  :-)


John ParkerService Quality ManagerAsked:
Who is Participating?
Robert SchuttSoftware EngineerCommented:
When you want to include a binding value in the url attribute, the whole value needs to be generated from within the asp tags.

One possible way would be:
NavigateUrl='<%# Eval("ATTACHMENT_PATH", "~/ServeFFAttachment.aspx?FileName={0}") %>'

Open in new window

Note that the query parameter in your generated url should actually be url encoded to make valid html, if that's important in your case you could try something like:
NavigateUrl='<%# String.Format("~/ServeFFAttachment.aspx?FileName={0}", HttpUtility.UrlEncode(Eval("ATTACHMENT_PATH"))) %>'

Open in new window

John ParkerService Quality ManagerAuthor Commented:

That was it!  Thank you very much for the quick response!  I did have to make one minor change to the use of the URLEncoded function...  I had to add the ToString method to the Eval function for it to work.  Otherwise the compiler didn't like it.

NavigateUrl='<%# String.Format("~/ServeFFAttachment.aspx?FileName={0}", HttpUtility.UrlEncode(Eval("ATTACHMENT_PATH").ToString())) %>' 

Open in new window

Thanks again!

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.