我有一个链接按钮:
<asp:LinkButton ID="LinkButtonPrint" runat="server" OnClick="OnPrint_Click">
<img src="img/print-icon.png" alt="" />
<asp:Literal runat="server" Text="<%$ Resources:PrintPage %>" />
</asp:LinkButton>
在后面的代码中,我在onclick
中添加Page_Load
处理程序,如下所示:
LinkButtonPrint.Attributes["onclick"] = "StartLoadTracking(this, '" + GetLocalResourceObject("Loading") + "')";
呈现的HTML如下所示:
<a href="javascript:__doPostBack('ctl00$LinkButtonPrint','')"
id="ctl00_LinkButtonPrint" onclick="StartLoadTracking(this, 'Loading...');">
<img alt="" src="img/print-icon.png">Print page
</a>
如果我单击此按钮它正常工作(它将响应PFD文件,因此不会将HTML发送回浏览器),但如果我点击页面上的另一个按钮(这会使一个完整的回发)LinkButtonPrint
将没有内部内容,它将呈现如下:
<a href="javascript:__doPostBack('ctl00$LinkButtonPrint','')"
id="ctl00_LinkButtonPrint" onclick="StartLoadTracking(this, 'Loading...');"></a>
如果我从LinkButtonPrint.Attributes["onclick"] = ...
删除Page_Load
行,一切正常(除了我的js函数没有被调用,但这是正常的)。
我在这里缺少什么?
修改
这是
的重复
asp.net Link button image not visible after postback
但那个也没有解决:(
答案 0 :(得分:30)
Microsoft现已知道此问题,他们已在Microsoft Connect issue 718810: LinkButton controls collection lost on postback上发布了正式声明和解决方法。
Microsoft声明是:
感谢您的反馈。这似乎是一个奇怪的事实,LinkButton控件允许通过Text属性或标记中的直接文本内容,或通过Controls集合或标记的子控件。解决方法是使用占位符作为控件的根内容,并将所需的混合内容放在那里,例如。
<asp:LinkButton runat="server">
<asp:PlaceHolder runat="server">
This is some text.</br>
<asp:Label runat="server">This is a control</asp:Label>
</asp:PlaceHolder>
</asp:LinkButton>
答案 1 :(得分:14)
我找到了解决方案:
我必须将runat="server"
添加到<img>
:
<asp:LinkButton>
标记
<img src="img/print-icon.png" alt="" runat="server" />
答案 2 :(得分:1)
只需添加上述解决方案即可。
当我的启用= false (显示禁用的样式)我的链接按钮然后通过另一个控件从页面引起回发时,我发现这种情况特别发生。
链接按钮的.Text组件在回发后被删除。
但是通过在我的.Text / html标签(em,span)上放置runat =“server”,它们现在会在回发后保留。
答案 3 :(得分:0)
问题是属性[“onclick”] = 会覆盖onclick操作的处理程序。
你可以尝试两件事:
LinkButtonPrint.Attributes.Add("onclick", "StartLoadTracking(this, '" + GetLocalResourceObject("Loading") + "');");
或
LinkButtonPrint.Attributes["onclick"] = "StartLoadTracking(this, '" + GetLocalResourceObject("Loading") + "');" + LinkButtonPrint.Attributes["onclick"];