日期:2014-05-18  浏览次数:20509 次

关于客户断掉服务端控件事件问题?
javascript 掉服务端butten 事件 隐藏butten 调用失败~ 请求好的解决方案

------解决方案--------------------
用一个隐藏button,javascript 调用 document.getElementById('yourbutton').click();
------解决方案--------------------
隐藏的是服务器控件
<asp:Button id="yourbtn" runat="server" style="display:none" onclick="yourbtn_Click" />
------解决方案--------------------
你的问题的解决办法

protected void Page_Load(object sender, EventArgs e)
{
this.yourbutton.Attributes.Add("style", "visibility:hidden");
}

这时候就可以用你的button document.getElementById('yourbutton').click();来进行服务器返回了。

解释如下:

ASP.NET中Visible="false" 在呈现成HTML标记语言时ASP.NET会去掉此标记语言,换句话说你用JS是取不到这个标记类容的,它被序列化后放入隐藏的VIEWSTATE中,只有服务器通过反序列化后才能调用到
而CSS中style="visibility: hidden;" 和 js中的control.style.visibility="hidde"; 它只是把当前控检的标记标识为不显示,但在页面呈现的HTML标记语言中是存在着的,换句话说就是用JS取查找这个控检是可以查找到的。
所以我们在使用服务器控件并不显示它并且需要用JS对这个控件行为时用style="visibility: hidden;"而不要用服务器控件本身的Visible="false" 属性