现在的位置: 首页 > 综合 > 正文

javascript 客戶端触发服务器端事件

2013年01月08日 ⁄ 综合 ⁄ 共 1624字 ⁄ 字号 评论关闭

private void Page_Load(object sender, System.EventArgs e)
{
this.txtMediaDate.Attributes["onblur"] = "__doPostBack('"+this.LinkButton1.ClientID+"','')";
this.LinkButton1.Attributes.CssStyle["display"]="none";
this.LinkButton1.Click +=new EventHandler(MediaDate_LostFocus);
}
private void MediaDate_LostFocus(object sender, EventArgs e)
{
Response.Write("wlsadfl");
}  

http://blog.csdn.net/kucool/archive/2007/11/22/1898116.aspx

<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4NDIzMDg2NDRkZMlHJoBQ9CYcWBtBK+zrfZzKoh/i" />
</div>

<script type="text/javascript">
<!--
var theForm = document.forms['form1'];
if (!theForm) {
     theForm
= document.form1;
}

function __doPostBack(eventTarget, eventArgument) {
    
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
         theForm.__EVENTTARGET.value
= eventTarget;
         theForm.__EVENTARGUMENT.value
= eventArgument;
         theForm.submit();
     }

}

// -->
</script>
    
<div>

aspx中LinkButton的代码:
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">button1</asp:LinkButton>
在html中的源码中被翻译成了:
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">button1</a>

上面的代码可以明显的看出,LinkButton只不过就是一个超链接,他的链接就是执行javascript语句通过调用__doPostBack函数来调用服务器端的后台代码的。因此,在有LinkButton的页面,会自动加上上面的__doPostBack函数。

但是在我们调用__doPostBack函数时,有些时候调用这个函数会出现"对象不存在"的脚本错误? 那是因为Html里面没有__doPostBack函数体,一般在拖放那些有自动回传功能的控件时,当把他的autoPostback属性设为True,在运行的时候系统会自动添加__doPostback函数体,当然最直接的办法就是添加一个LinkButton然后把其Text属性设为空,切记不要设Visible属性,因为如果Visible=false,在翻译成Html时,直接就忽略LinkButton的存在了。

抱歉!评论已关闭.