マスターページのPage_Loadメソッドが2回発生する

今私は非常にシンプルなASP.NETプロジェクトに取り組んでいます。私は頭がおかしくない問題に遭遇しました。私の知らない何らかの理由で、私のマスターページのPage_Loadメソッドが2回発生します。ある部分。 最初に IsPostBack の値が真であり、2度目は偽です。私は検索し、この問題について多くの議論が見つかりましたが、答えのどれもこれを解決するのに役立ちませんでした。

これを解決し、メソッドが2回発射されるのを防ぐには、何ができますか?

編集:

ねえ、barakのリクエストはここにCatalog.aspxです:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Catalog.aspx.cs" Inherits="Catalog" Title="Untitled Page" Debug="true" %>

 :: קטלוג מוצרים   מיון המוצרים על פי: חברה, מחיר, דור


    
       <div Class="Catalog">  
           

רק ב ש"ח!  הוסף מוצר
</div>
  <div class="pages">
 לעמוד הקודם   אתה נמצא בעמוד:   לעמוד הבא 

3
URLはロードごとに同じか異なるのですか?
追加された 著者 Dave Walker,
また、Firebug/IE devツールバーがないクリーンなブラウザで実行してみてください。
追加された 著者 Dave Walker,
マスターページまたは現在のページだけがOnLoadを2回起動しますか?
追加された 著者 tanathos,
page_loadコードを投稿してもらえますか?
追加された 著者 user676589,
@ tanathos、はい、特定のページで2回だけ発生します。 (Catalog.aspx)
追加された 著者 Amit Shtober,
@rangitatanz、URLは毎回同じです。私はURLの書き換えを適用しませんでした。
追加された 著者 Amit Shtober,

6 答え

どのように - あなたの問題は、イベントが呼び出されているDATABINDをどこに置いているかです - バインドを "バインド"を使用してバインディングを完了した後に - ページをリロードします(そしてマスターページで) )。 あなたのための最善の解決策は、すべてのあなたのirelevent関数/宣言を以下のようにすることです:

if (!page.ispostback())

マスターがロードされるときに、既にロードされているコードのすべての部分をスキップします。 さらに問題がある場合は私に気づく。

2
追加された
あなたはそれについて確信しています - 私はdatabindが文字通りページをリロードするとは思わない - それはちょうどテンプレートコントロールを設定します。データを2回、つまりpage_loadとサーバーサイドのイベントにバインドするのはよくあるエラーですが、それでもページを2回ポストバックしない場合もあります。最も一般的な症状は、そこにあると思われるグリッドの変更を失うことです。一種としてもしあなたが間違っていると証明されれば、いつでもうれしいです。
追加された 著者 Crab Bucket,
私はそれについて確信しています(私はpreviosプロジェクトのような問題に遭遇しました) - データがバインドされると(サーバーサイドのイベント)、ページが再度ロードされているときに、いくつかのコンポーネントでそれを防ぐことができます - ポストバックイベントを呼び出しています。コメントありがとうございました
追加された 著者 barak ben horin,

特定のブラウザでasp.netページが2回読み込まれる問題があります。私は複数のブラウザで再テストする価値があるかもしれません。

1つの原因は、イメージタグ内の空のsrc属性です。


この投稿では、より幅広い議論ができます - 最初に td のバックグラウンド属性を指しています。

同じポストには他にも興味深い可能性があります。の用法

<%@ Page Language="C#" ... AutoEventWireup="true" ... %>

〜と

override protected void OnLoad(EventArgs e) 

おそらく Page_Load を使用しても同じ問題が発生する可能性があります。解決策は AutoEventWireup = "false" です。

編集

あなたのコードを見ると、これが問題になる可能性があります

ImageUrl='<%# Bind("ProductPic") %>'

これがいつでも評価されるならば

ImageUrl=''

The this could cause the src="" issue 〜と the images which in turn can cause double postbacks

2を編集

他の唯一の方法は、ページのバインド後(またはどこでも) Response.Redirect を呼び出す場合です。それは、ページが確実に2回ロードされる原因になります。

1
追加された
そうではありません。AutoEventWireup = "true"でOnInitまたはOnLoadスタイルの構文を使用して問題が発生します。あなたはPage_Loadを使用しているので、正しいですが、これは問題にはなりません
追加された 著者 Crab Bucket,
問題は、AutoEventWireupをfalseに設定すると、Page_Loadイベントはまったく発生しないということです。
追加された 著者 Amit Shtober,

私の場合、私は使用していた:

Protected Sub Page_Load() Handles Me.Load

I didn't have the page's AutoEventWireUp set to anything, so it was defaulting to true. To resolve the issue I explicitly set the AutoEventWireUp property for the page to false.

1
追加された

これはVS 2013 .net 4.5で私に起こっていました。ページの下部に、私は気づいた:

<script type="text/javascript" src='<%# ResolveUrl ("~/Scripts/jquery-1.10.2.min.js") %>'></script>

次のものをレンダリングする:

 <script type="text/javascript" src=''></script>

私が読んだところから、空の@srcがこれを引き起こします。

必要に応じてjqueryをロードするときに削除しました。

0
追加された

特定の回答が必要な場合は、あなたの方法を送ってください。 ただし、あなたのページの仕組みはここにあります。多分あなたの理解に役立つでしょう: ページをロードすると、まず実際のページが呼び出されます(彼の page_load ) ページがレンダリングを完了した後、マスターページが呼び出されています(彼の page_load )。 runat = server に設定され、SQL情報/ボタン/チェックボックスを呼び出す - postback = false に設定されていないオブジェクトは、マスターページの page_load を入力してください。 これが少し助けてくれることを望みます。

0
追加された
シャロム・バラクとアミット
追加された 著者 ParPar,
シャロン・シャローム..
追加された 著者 barak ben horin,
"onDataBound"などのイベントや、page_loadの後に自動的に起動する他のイベントはありますか?
追加された 著者 barak ben horin,
お返事をありがとうございます。私は編集し、htmlコードを追加しました。必要なC#コードも必要ですか?
追加された 著者 Amit Shtober,

私は、マスターページでautoEventWireUpプロパティをTrueに設定し、これを修正することができました。 MasterPage CodeBehindのSub Page_Load()、Not Sub Page_Load()はMe.Loadを処理します。

私はこれを持っていました

<%@ Master Language="VB"
    CodeFile="MasterPage.master.vb"
    Inherits="MasterPage" %>

そして私のコードの後ろには

Sub Page_Load() handles me.load       
    Response.Write("Hello")
End Sub

ページにHelloHelloが表示される(コードが2回実行された)

新しいコード

<%@ Master Language="VB"
    CodeFile="MasterPage.master.vb"
    AutoEventWireup="true"
    Inherits="MasterPage" %>

コードの背後

Sub Page_Load()
    Response.Write("Hello")
End Sub

ページにHelloが表示されます

0
追加された
どのように動作するかのサンプルコードを含めることができますか?
追加された 著者 Jason D,