如果我在没有runat =“server”的情况下使用以下代码,则输入的src工作正常,我看到图像通过。
<div><input id="testButton" type="image" src="<%=TestButtonImageUrl %>" onserverclick="RedirectTest" /></div>
网址为https://fpdbs.paypal.com/dynamicimageweb?cmd=_dynamic-image
但是如果我把runat =“server”放进去,出于某种原因,我得到了这个url:
<div><input id="testButton" type="image" src="<%=TestButtonImageUrl %>" onserverclick="RedirectTest" runat="server" /></div>
答案 0 :(得分:12)
您不能将<%= %>
语法与服务器控件一起使用(包括带runat="server"
的标准HTML元素)。你有两个选择:
HtmlInputControl
)并使用Attributes
属性分配src属性:imageControl.Attributes["src"] = value;
src="<%# %>"
)分配属性,并从后面的代码中调用imageControl.DataBind()
答案 1 :(得分:2)
也许我错过了什么。但是runat服务器标签不支持代码表达。
答案 2 :(得分:1)
当你将runat =“server添加到那个html标签时,Asp.Net将它从字符串转换为HtmlControl - 在这种情况下是HtmlInputImage类型。你可以通过添加:
来看到这种情况。<%= testButton.GetType() %>
然后您唯一需要做的就是设置Src属性,与其他注释相反,您可以在内联aspx中执行 - 不需要代码隐藏文件:
<%
testButton.Src = "/content/logo.png";
%>
<input id="testButton" type="image" runat="server" src="" onserverclick="RedirectTest" />
你需要在实际输入之前设置Src属性,这有点不直观,原因是代码是在渲染时运行的,所以如果Src属性的设置在控件之后,为时已晚。
答案 3 :(得分:0)
如果jQuery是一个选项而不是你可以试试这个:
<script type="text/javascript">
$(function() { $('#<%=testButton.ClientID %>').attr('src', '<%=TestButtonImageUrl %>'); });
</script>
...
<div><input id="testButton" runat="server" type="image" onserverclick="RedirectTest" /></div>
更新的 另一个选择是使用像这样的处理创建一个HttpHandler
public void ProcessRequest(HttpContext context)
{
var testButtonImageUrl = "https://fpdbs.paypal.com/dynamicimageweb?cmd=_dynamic-image";
context.Response.Redirect(testButtonImageUrl);
}
添加web.config路径以处理image.img或其他任何内容并更新aspx
<div><input id="testButton" runat="server" type="image" src="image.img" onserverclick="RedirectTest" /></div>