今天图老师小编要跟大家分享Asp.Net的控件如何与Server交互,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!
【 tulaoshi.com - Web开发 】
以前写asp的程序的时候,知道只有type设置为submit的按钮,才能触发表单提交数据给服务器端。
如:Asp.Net中的Button就是等于input type="submit".
但是现在Asp.Net的好多控件都可以任意的和服务器端交互,如:LinkButton.
这是怎么实现的呢?
难道是一种全新的方式吗?
其实,这只是微软的一种变通的方式。
我们先来看看客户端的代码是如何的.
我这里是一个带有LinkButton的页面,
其实LinkButton在客户端就等于html里的A.
我们来看看LinkButton为什么也能和服务器端交互?
当我们点击右键查看该页面的源代码时,看到:
script type="text/javascript"
!--
var theForm = document.forms['ctl00'];
if (!theForm) {
theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// --
/script
a id="simpleLinkButton1" href="javascript:__doPostBack('simpleLinkButton1','')"Click Me/a
input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /
input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /
从上面的代码中就可以看出simpleLinkButton1是一个链接,通过客户端代码来提交所在的表单。
而其中两个隐藏域,则用来交换数据的,就是把__doPostBack的两个参数值赋给这两个隐藏域。
这就是为什么LinkButton也具有提交数据的最直观的原因。
那么这上面的代码是怎么生成的呢?
我们看LinkButton的源代码就可以清楚地知道:
protected internal override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if ((this.Page != null) && this.Enabled)
{
this.Page.RegisterPostBackScript();
if ((this.CausesValidation && (this.Page.GetValidators(this.ValidationGroup).Count 0)) || !string.IsNullOrEmpty(this.PostBackUrl))
{
this.Page.RegisterWebFormsScript();
}
}
}
以上只是把自己在学习工作过程中的一些体会记录如此,防止自己忘记了。
也望和大家多多交流!
http://www.cnblogs.com/maplye/archive/2006/08/29/489338.html
来源:http://www.tulaoshi.com/n/20160219/1616426.html
看过《Asp.Net的控件如何与Server交互》的人还看了以下文章 更多>>