asp.Netバックグラウンドは数秒プログラムを実行したりページをジャンプしたりするのを待っています

6024 ワード

シナリオ1比較的包括的なソリューション原文アドレス
次はいくつかのAspです.Netバックグラウンドcsでは、ページを数秒または一定時間待ってから、次の操作を実行する方法がいくつかあります.
 
1、Responseオブジェクトジャンプステアリング
コード:Response.Write( " ");
2、Thread法による
コード:System.Threading.Thread.Sleep(3000);
注:この方法は便利ですが、科学的ではありません.システムを一定の時間休眠させます.
3、ジャンプ関数
コード:ClientScript.RegisterClientScriptBlock(GetType)、","alert('ログイン成功!');settimeout(function(){location.href='b.aspx'},3000);  ");
4、js関数
コード:
protected void Button1_Click(object sender,EventArgs e){form 1.InnerHtml="システムは3秒後に転向する";body.Attributes.Add("onload","settimeout(‘window.location="b.aspx",3000);  }
 
次の例を示します:(コピー、直接実行可能)


  protected void Button1_Click(object sender, EventArgs e)
  {
  Page.ClientScript.RegisterStartupScript(Page.GetType(), "s", "t()", true);
  }


 




  <br><p>  <script><br>   var tt = 3;<br>   function t() {<br>   if (tt < 1) {<br>   window.location = "b.aspx"<br>   return;<br>   };<br>   document.getElementById("<%=form1.ClientID %>").innerHTML=「操作が完了すると、ページは」+tt+「後向き」になります.<br>   tt–;<br>   window.setTimeout("t()", 1000);<br>   }<br>   <br>          <br>  <br>シナリオ2本人が推奨するソリューションの原文アドレス<br>response.write("");//親測有効WENG 2014.4.20 22:55 <br>この文を出力する<br>1は1秒で修正できます<br>urlの後ろにジャンプするページがあります<br>注記:<br>http-equivプロパティは、名前/値ペアに名前を指定します.そして、サーバが実際のドキュメントを送信する前に、ブラウザに送信するMIMEドキュメントヘッダに名前/値ペアを含むことを示す.<br>  <br>プロンプトボックスをポップアップし、ジャンプします(2014.4.22 1209はまだ検証されていません)<br>Response.Write(「window.alert('あなたはすでに新しいメッセージを発表しました!');location.href='index.asp';);<br>  <br>シナリオ3 asp.Netのいくつかのページのジャンプ方式(クリックして原文を見ます)<br>  <br>1つ目:<br>ページ登録jsスクリプトジャンプ、GET値伝達方式に属する<br>Page.ClientScript.RegisterStartupScript(GetType()、「KEY 1」,「window.open('」+url+「','テスト','_self');」true);Response.Write("<strong><span style="color:#ff0000;">window.location.href</span></strong>='"+ url + "'"); <br>... <br>2つ目:【リダイレクトメソッド転送】<br>GET値伝達方式に属する<br>Response.Redirect(url+"?id=1") <br>なぜならRedirectメソッドでは、2回のリクエスト応答操作を行います(注:まずhttpリクエストをクライアントに送信し、通知を新しいページにジャンプする必要があります.これにより、クライアントは新しいリクエストをサーバに送信します.つまり、1つのリダイレクトリクエストは実際には2つのリクエスト応答です.1つは最初のリクエスト応答で、もう1つは新しいリダイレクトリクエスト応答です).パフォーマンスが要求されるWebサイトでは、この方法をできるだけ避けなければなりません.<br>リダイレクト要求がGET要求にすぎないことに注意してください.これは、ソースページからリダイレクトコマンドでデータを送信できないことを意味します.ただし、リダイレクトではクエリー文字列を使用してデータを渡すことができます.しかし、技術的に言えば、redirect方式を使用すると、確かに1つのページから別のページにジャンプすることができる.それに比べて、Server.Transferの方が効率的ですが、ジャンプの範囲は同じWebサーバ(同じサイト)の異なるWebページに限られます.本質的には、サーバを使用することができます.Transferは、不要な要求応答動作を排除する.異なるサーバのWebページに再配置する必要がある場合は、Responseを使用する必要があります.Redirectメソッド<br>  <br>3つ目:【サーバ転送方法】<br>POST値伝達方式に属する<br>(1)、Server.Transfer(url) <br>クライアントに依存して別の新しいページに要求を送信するのとは異なり、サーバ転送は、Webサーバが処理するコードを簡単に変更することによって、新しいページを要求する目的を達成するサーバリダイレクト技術である.要求されたページとソースページが同じサーバにある場合、サーバ転送はResponseよりも大きい.Redirectメソッドは、サーバのリソースだけでリダイレクトできる追加のオーバーヘッドを回避できるため、より効果的です.この技術には、ページがリダイレクトされると、クライアントのURLがソースページのURL(アドレスバーアドレスが変わらない)を維持し、取得したデータがソースページによって生成されたと顧客に認識される副作用があることに注意してください.もちろん、ほとんどの場合、これは問題ではありませんが、デバッグがさらに困難になります.<br>(2)、Sever.Execute(url) <br>また,ジャンプの範囲は同じWebサーバ(同一サイト)の異なるWebページに限られる.この方法は、あるページの出力結果を別のaspxページに挿入する必要がある場合に使用されます.ほとんどはテーブルで、あるページをネストしたように別のページ(ターゲットページをソースページに挿入)に存在します.この方法の再配向要求はサーバ側で発生するので、ブラウザのurlアドレスは元のページのアドレス(アドレスバーアドレスは変更されません)が保持されます.<br>第四種類:【ウェブページにまたがる提出を実現する】POST値伝達方式に属する<br>「server」ID=「txt_username」>「server」ID=「Button 4」Text=「POST転送クロスページ送信」PostBackUrl=「~/LOgin.aspx」/><br>ソースページでPostBackUrlを使用してターゲットページを指定し、ターゲットページでソースページの値を取得します.<pre><code><span style="color:#0000ff;">protected</span><span style="color:#0000ff;">void</span>Page_Load(<span style="color:#0000ff;">object</span><span style="color:#000000;">sender, EventArgs e) {    </span><span style="color:#0000ff;">if</span>(!<span style="color:#000000;">IsPostBack)    {</span><span style="color:#808080;">    </span></code></pre> <pre><code><span style="color:#808080;">/</span><span style="color:#008000;">/跨页提交   Transfer   Execute  跳转时 PreviousPage均不为空</span><span style="color:#008000;">//</span><span style="color:#008000;">这个属性无论在何时当前页面进行跨网页提交操作时都会指向源页面,而不是目标页面</span></code></pre> <pre><code><span style="color:#008000;"><span style="color:#0000ff;">        if</span>(PreviousPage !=<span style="color:#0000ff;">null</span><span style="color:#000000;">)        {            </span><span style="color:#0000ff;">if</span><span style="color:#000000;">(PreviousPage.IsCrossPagePostBack)                {                  TextBox text</span>=PreviousPage.FindControl(<span style="color:#800000;">"</span><span style="color:#800000;">txt_username</span><span style="color:#800000;">"</span>)<span style="color:#0000ff;">as</span><span style="color:#000000;">TextBox;                  </span><span style="color:#0000ff;">this</span>.lbl_param.InnerHtml =<span style="color:#000000;">text.Text;                }            }        } }</span></span></code></pre> <br>以上のように値を取得する方式はTransferやExecuteにも適用される.