asp:LinkBut​​ton的内部图像和文本在回发后消失

cte*_*kse 13 asp.net

我有一个链接按钮:

<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>
Run Code Online (Sandbox Code Playgroud)

在后面的代码我添加一个像这样的onclick处理程序Page_Load:

LinkButtonPrint.Attributes["onclick"] = "StartLoadTracking(this, '" + GetLocalResourceObject("Loading") + "')";
Run Code Online (Sandbox Code Playgroud)

呈现的HTML如下所示:

<a href="javascript:__doPostBack('ctl00$LinkButtonPrint','')" 
id="ctl00_LinkButtonPrint" onclick="StartLoadTracking(this, 'Loading...');">
    <img alt="" src="img/print-icon.png">Print page
</a>
Run Code Online (Sandbox Code Playgroud)

如果我单击此按钮它正常工作(它将响应PFD文件,因此没有HTML发送回浏览器),但如果我点击页面上的另一个按钮(这使得完整的回发),LinkButtonPrint将没有内部内容,它将呈现如下:

<a href="javascript:__doPostBack('ctl00$LinkButtonPrint','')"  
id="ctl00_LinkButtonPrint" onclick="StartLoadTracking(this, 'Loading...');"></a>
Run Code Online (Sandbox Code Playgroud)

如果我LinkButtonPrint.Attributes["onclick"] = ...Page_Load一切工作中删除该行正常工作(除了我的js函数没有被调用,但这是正常的).

我在这里错过了什么?

编辑
这是重复的
asp.net链接按钮图像在回发后不可见
但是那个也没有解决:(

Ful*_*vio 30

此问题现在已为Microsoft所知,并且他们已发布Microsoft Connect问题718810上的官方声明和解决方法:LinkBut​​ton控制回发时丢失的集合.

微软的声明是:

感谢您的反馈.这似乎是一个奇怪的事实,LinkBut​​ton控件允许通过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> 
Run Code Online (Sandbox Code Playgroud)


cte*_*kse 14

我找到了解决方案:
我必须添加runat="server"<img>标签内<asp:LinkButton>:

<img src="img/print-icon.png" alt="" runat="server" />
Run Code Online (Sandbox Code Playgroud)

  • 好的解决方法,但如果你在`LinkBut​​ton`里面有很多html标签,它可能会污染标记(例如:`<img>`,`<b>`,`<i>`等等).另一种选择是我在[另一个回答](http://stackoverflow.com/a/11125367/822735)中报告了微软官方的解决方法,其中还包括微软就此问题发表的官方声明. (3认同)