2010-02-01 51 views
1

如果我使用下面的代码没有runat =“服务器”输入的src工作正常,我看到图像通过。输入丢失src

<div><input id="testButton" type="image" src="<%=TestButtonImageUrl %>" onserverclick="RedirectTest" /></div> 

网址是https://fpdbs.paypal.com/dynamicimageweb?cmd=_dynamic-image

但如果我把RUNAT = “服务器” 中,由于某种原因,我得到这个的网址:

<div><input id="testButton" type="image" src="<%=TestButtonImageUrl %>" onserverclick="RedirectTest" runat="server" /></div> 

网址为http://localhost/%3C%=lButtonImageUrl%20%%3E

+0

不,我不想使用ImageButton或任何MS网页控件。我想弄清楚如何获得这个属性,并onserverclick这两个工作 – PositiveGuy 2010-02-01 15:01:04

+0

我正在逐步取消在我们当前的ASP.NET基于应用程序的ASP.NET Web控件的使用。我们现在不能移动到MVC,所以我想通过标准的HTML控件来做到这一点,所以这是我在传统的ASP.NET中打砖墙的一个很好的例子。尝试获取属性和服务器端甚至处理程序工作。 – PositiveGuy 2010-02-01 15:02:10

+1

我真的不明白你希望通过在ASP.NET网站中使用Web表单模型来达到什么目的吗?我不认为这将有助于理解ASP.NET MVC。 – 2010-02-01 15:55:41

回答

12

您不能在服务器控件(包括标准HTML元素runat="server")上使用<%= %>语法。你有两个选择:

  • 接入代码控制后面(作为HtmlInputControl),并使用Attributes属性分配src属性:imageControl.Attributes["src"] = value;
  • 使用数据绑定语法(src="<%# %>")指定属性和调用imageControl.DataBind()从后面
2

也许我错过了一些东西。但runat服务器标签不支持代码表达式。

+0

我需要能够运行该onserverclick方法并具有对属性TestButtonImageUrl的引用也同时工作 – PositiveGuy 2010-02-01 15:00:22

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> 
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的的设置 - 属性是在控制之后,它为时已晚。