PostBack

参考文章:http://www.cnblogs.com/artech/archive/2007/04/06/702658.html

Part 1
在新建页上拖出一个LinkButton控件,运行。在源文件中会出现__doPostBack函数。
对应的LinkButton被转化成HTML的a Tag。
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
如果在aspx.cs中定义了LinkButton的事件,点击此a Tag时事件将会被触发。
另:可以把链接文字去掉,做为隐藏的控件来利用。

Part 2
如果把上述的asp:LinkButton换成asp:Button,运行后在源文件中会找不到__doPostBack函数。
对应的Button被转化成HTML的input Tag。
<input type="submit" name="Button1" value="Button" id="Button1" class="Button1" />
这种默认情况下Button将以submit的方式提交表单。

为asp:Button1加上UseSubmitBehavior="false"属性之后,源文件出现__doPostBack函数。Button被转化成:
<input type="button" name="Button1" value="Button" οnclick="javascript:__doPostBack('Button1','')" id="Button1" class="Button1" />
改变其表单提交的行为(type="button"),Button将通过调用javascript的方式(调用__doPostBack函数)提交表单。

Part 3
为Button加上属性后,在客户端可以这样调用服务端事件:
<a href="#" οnclick="document.getElementById('Button1').click()">HTML a Tag</a>
<input type="button" name="Button2" id="Button2" value="Button2" οnclick="__doPostBack('Button1','')"/>

Part 4:
类似Button2的调用还可以包括参数:
<input type="button" name="Button3" id="Button3" value="Button3" οnclick="__doPostBack('Button1','btn3')"/>
在Button1_Click事件中加入:if (Request["__EVENTARGUMENT"] == "btn3") {  //doSomething  },用参数可区分出是哪个按钮触发事件。

Part 5:
联带笔记。多个Button共用一个函数方法:
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="1" OnCommand="MyPostBack">LinkButton</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="2" OnCommand="MyPostBack">LinkButton</asp:LinkButton>
protected void MyPostBack(object sender, CommandEventArgs e)
{
    Response.Write(((LinkButton)sender).ID + e.CommandName);
}

Part 6:
Asp.Net夜话之五:Page类和回调技术
参考文章:http://www.cnblogs.com/xiayang/articles/1428358.html 
aspx:

ContractedBlock.gif ExpandedBlockStart.gif Code
<td>注册用户名:
 
<input type="text" size="10" maxlength="20" id="txtUserName" onblur="CallServerMethod(txtUserName.value,null)" />
 
<span id="message"></span>
</td>
<script type="text/javascript" language="javascript"> 
function Success(args, context) 
ExpandedBlockStart.gifContractedBlock.gif

    message.innerText  
= args; 
}

function Error(args, context) 
ExpandedBlockStart.gifContractedBlock.gif

    message.innerText  
= '发生了异常'
}
 
</script>

aspx.cs(page继承ICallbackEventHandler接口):

ContractedBlock.gif ExpandedBlockStart.gif Code
string result = ""
public void RaiseCallbackEvent(String eventArgument)
ExpandedBlockStart.gifContractedBlock.gif
{
    
if (eventArgument.ToLower().IndexOf("admin"!= -1)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        result 
= eventArgument + "不能作为用户名注册。";
    }

    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        result 
= eventArgument + "可以注册。";
    }

}

public string GetCallbackResult()
ExpandedBlockStart.gifContractedBlock.gif
{
    
return result;
}


public void Page_Load(Object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
{
    ClientScriptManager csm 
= Page.ClientScript;
    
//产生WebForm_DoCallback函数,Success和Error是JS的函数名
    
//reference = WebForm_DoCallback('__Page',argsName,Success,"",Error,false)
    String reference = csm.GetCallbackEventReference(this"argsName""Success""""Error"false);  
    String callbackScript 
= "function CallServerMethod(argsName, context) {\n" + reference + ";\n }";
    
//RegisterClientScriptBlock输出后的位置会在<form>的下一行
    
//RegisterStartupScript输出后的位置会在</form>的上一行
    csm.RegisterClientScriptBlock(this.GetType(), "KeyName", callbackScript, true);
}

转载于:https://www.cnblogs.com/vipcjob/archive/2009/07/29/1534064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值