inline codeblock doesnt run

  • Thread starter Thread starter Nime
  • Start date Start date
N

Nime

This codeblock has no problem.

XXX<%= 19690 %>YYY


Next inline codeblock doesn't run below.


<asp:Image runat="server" ID="img"
ImageUrl="image.aspx?id=1&key=<%=19690 %>" />


I just wanted to write key value for the image. Any idea?
 
I can reproduce your problem using a simple aspx page as below:

<%@ Page language="c#" AutoEventWireup="true" %>
<html>
<body >
<form id="Form1" method="post" runat="server" action="?<
%=Request.QueryString%>">
Query String value: <%=Request.QueryString %>
<br />
<input type=submit />
</form>
</body>
</html>

This displays the following after submitting the form:
Query String value: %3c%25=Request.QueryString%25%3e

For some reason, the inline code is not executed when the
runat="server" is present. The strange thing is I have 3 machines
that do not behave this way and one that does, so I can only assume
that this is an IIS/.NET config issue, possibly caused by a recent MS
Update. The software I have installed recently on the machine
exhibiting this behaviour is:
Visual Studio 2008
WSE 3.0
IE8 RC1

I wonder if any of these have caused this?
 
<% %> are not allowed in server controls. When you embedded halfway into
your imageurl property, the compiler wasnt able to tell you the issue

<asp:image id="bla" imageurl="blabla<%= 234 %>" /> doesnt show the error but
<asp:image id="bla" imageurl="<%=234" /> does

try using an html control instead:
<img id="myimage" src="<%=123 %>" />

or use data binding
 
iduditz can you point me to any MS documentation that states this? <%
%> has worked in server side controls in the web app I work on for
years, and even now works on all but one win2003 server - I just can't
work out what the difference is for this one machine, and suspect it
may be a .NET Framework update...
 
Is what you want simply

<asp:Image runat="server" ID="img" ImageUrl="image.aspx?id=1&key=19690" />

?

Andrew
 
I've uninstalled the .NET framework while investigating this (3.5 then
3.0 and 2.0) - I then had no problems after
Installing each of the following:
..net framework 2.0
..net framework 2.0 SP1
..net framework 3.0
..net framework 3.0 SP1
..net framework 3.5

But after I installed .net framework 3.5 SP1 the behaviour returned –
I guess this is the issue. I have raised this with Microsoft and will
update this thread when I get a response.
 
Yes but I have to display different image every time...



I tried to use a function and set a breakpoint. That breakpoint never be hit,
I also tried to rename the function for testing purpose, then an error occured.

<asp:Image runat="server" ID="img" ImageUrl='<%# getUrl(19690) %>' />

public string getUrl(int key)
{
return "image.aspx?id=1&key=" + key; // I set breakpoint here
}
 
Time will hopefully tell...

Are you able to confirm whether you have .NET Framework 3.5 SP1 (which
stealthily brings .NET 2.0 SP2)? If so, does removing it help?
 
Nime said:
Yes but I have to display different image every time...

Hey! Not fair: you didn't write that in the OP! ;-)

I think maybe it's time for you to discover using "code-behind", although as
it looks like you were doing so with the function, I'm not sure why you
didn't do something along the lines of

(VB.NET as I don't know C#)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
img.ImageUrl=getUrl(19690)
End Sub

Or if the required image ref was passed in the query string, something like

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
img.ImageUrl=getUrl(Request.QueryString("id"))
End Sub

Of course, you'd do input validation on the querystring.

I suspect using <% %> inside an asp: control was never actually meant to
work.

Andrew
 
Andrew is partly correct - this is a known bug according to MS, code
render blocks <%...%> cannot be used for attribute values in server
controls. The problem I had was caused by this combined with the fact
that prior to .NET 2 SP2 the "action" attribute for server forms had
no effect, but after SP2 this was changed, my code render block that
had previously been ignored was suddenly eing output literally.

Details can be found here
http://stackoverflow.com/questions/...solve-in-asp-net-custom-control/564601#564601
- there are links to the connect bug report if you're interested.
 
Back
Top