在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
新聞熱點
疑難解答
圖片精選