在asp.net中經常要用到腳本回調和頁面間的傳值,下面是關于scriptcallback和server.transfer簡單的示例代碼
webform1.aspx
給head中增加__dopostback腳本,如果頁面含有hyperlink等按鈕控件,該腳本和2個隱藏控件"__eventtarget"和"__eventargument"由framework自動生成,若沒有需要手動添加
<script language="javascript">
<!--
function __dopostback(eventtarget, eventargument) {
    var theform;
    if (window.navigator.appname.tolowercase().indexof("netscape") > -1) {
        theform = document.forms["form1"];//注意此處的formid
        } else {
        theform = document.form1;//還有此處
    }
    theform.__eventtarget.value = eventtarget.split("$").join(":");
    theform.__eventargument.value = eventargument;
    theform.submit();
}
// -->
</script>
<form id="form1" method="post" runat="server">
<input type="hidden" name="__eventtarget" >
<input type="hidden" name="__eventargument" >
<a href="javascript:__dopostback('scriptcallback','scriptcallback')">scriptcallback</a>
<asp:textbox id="textbox1" runat="server">sometext</asp:textbox> 
c#
webform1.aspx.cs
private void page_load(object sender, system.eventargs e)
{
    if (ispostback)
        if (request.form["__eventargument"]== "scriptcallback")
            server.transfer("webform2.aspx", true);//第二個參數指示是否保留頁面的form和querrystring的值
}
webform2.aspx.cs
private void page_load(object sender, system.eventargs e)
{
    if(this.context.handler != sender)
        response.write(request.form["textbox1"]);
}
vb.net
webform1.aspx.vb
private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
    if ispostback then
        if request.form("__eventargument") = "scriptcallback" then
            server.transfer("webform2.aspx", true)'第二個參數指示是否保留頁面的form和querrystring的值
        end if
    end if
end sub
webform2.aspx.vb
private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
    if not me.context.handler is sender then
        response.write(request.form("textbox1"))
    end if
end sub
新聞熱點
疑難解答
圖片精選