我创建一个链接按钮并在其上放置图像。
这是我的代码:
<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时,为什么这个按钮会消失?
答案 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);
}