发布回发时链接按钮消失

时间:2016-08-08 08:23:31

标签: c# html asp.net

我创建一个链接按钮并在其上放置图像。

这是我的代码:

<asp:LinkButton ID="LinkButton1" runat="server" Text="">
        <asp:Image ID="Image1" ImageUrl="" runat="server" />
</asp:LinkButton>

这是我后来的C#代码:

if(!Page.IsPostBack)
{
   LinkButton1.OnClientClick = "ClientClick()";
   Image1.ImageUrl = "~/Images/embed.png";
}

我从Image的c#代码提供ImageUrl,并从链接按钮的c#代码添加OnClientClick事件。当页面首次加载时,按钮显示正确。

我的浏览器在回发之前呈现HTML

<a onclick="ClientClick();" id="MainContent_LinkButton1" 
href="javascript:__doPostBack('ctl00$MainContent$LinkButton1','')">
<img id="MainContent_Image1" src="Images/embed.png">
</a>

当我按下此页面中的任何按钮并发生PostBack时,按钮消失,但我的代码后面没有为PostBack的按钮做任何事情。

我的浏览器在回发后呈现HTML

<a onclick="ClientClick();" id="MainContent_LinkButton1" 
href="javascript:__doPostBack('ctl00$MainContent$LinkButton1','')">
</a>

如果我没有为链接按钮添加OnClientClick或Text,则图像不会消失。或者如果我为链接按钮设置ViewState为false,则图像不会消失。那么当页面是PostBack时,为什么这个按钮会消失?

2 个答案:

答案 0 :(得分:0)

使用EnableViewState="true"此代码即使回发后也能正常工作,并显示图像

<asp:LinkButton ID="LinkButton1" runat="server" Text="">
        <asp:Image ID="Image1" ImageUrl="" runat="server" />
</asp:LinkButton>


if(!Page.IsPostBack)
{
   LinkButton1.OnClientClick = "ClientClick()";
   Image1.ImageUrl = "~/Images/embed.png";
}

使用EnableViewState="false"您必须删除IsPostBack因为未在任何地方保存,您需要再次添加

// remove that check if EnableViewState is false
//if(!Page.IsPostBack)
{
   LinkButton1.OnClientClick = "ClientClick()";
   Image1.ImageUrl = "~/Images/embed.png";
}

答案 1 :(得分:-1)

这是因为Postback清除了asp.net页面的所有控件。

要保留以前加载的控件,您需要确保在Page_Load()中的任何代码都在&#34; Button_click&#34;上重新执行。这导致回发。

void button_click()
{
// do stuff

page_load(Dummy Object);

}