2012-02-15 20 views
3

私は、イベントハンドラを呼び出していて、そのイベントハンドラから、私がプレゼンターにF5の自動ボタンをクリックしてページをリフレッシュする方法を教えてください。私ASCXコントロールで

ASCXページで

public event EventHandler<EventArgs> Add; 

    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
     if (Add != null) 
      Add(sender, e); 

    } 

にあるメソッドを呼び出していたのボタンを持っていますプレゼンター

AddListView.Add += delegate(object sender, EventArgs e)//AddListView is a Interface 
    { 
    Add(); 

    }; 

私はbtnAddにその作業罰金とレコードをクリックしています追加取得されますが、私は、ブラウザのページを更新していたときに、F5によると、マウスbtnAddは火を取得してもう一度クリックします。私は

に..私はその作業罰金その後

// Page refresh F5 btn press 
    protected override void LoadViewState(object savedState) 
    { 
     object[] AllStates = (object[])savedState; 
     base.LoadViewState(AllStates[0]); 
     _refreshState = bool.Parse(AllStates[1].ToString()); 
     _isRefresh = _refreshState == bool.Parse(Session["__ISREFRESH"].ToString()); 
    } 

    // Page refresh F5 btn press 
    protected override object SaveViewState() 
    { 
     Session["__ISREFRESH"] = _refreshState; 
     object[] AllStates = new object[2]; 
     AllStates[0] = base.SaveViewState(); 
     AllStates[1] = !(_refreshState); 
     return AllStates; 
    } 

を使用しようとしましたが、私は再びbtnAddをクリックすることができませんリフレッシュした後、btnAddのクリックに対して、再び私はそのが正常に動作し、その後リフレッシュをしています他のコントロールでこのコントロールを呼び出すと、アイテムページをクリックしてデータリストをポストバックします。

btnAddをクリックせずに、自動ボタンをクリックしてF5をクリックするか、ページを更新する方法。

誰かが私を助けてください..

+0

私は、レコードを挿入した後、同じページにリダイレクトしてそのすべてを避ける方がよいと思います。 – Aristos

答えて

1

チェックは、このリンクは、ブラウザの更新がASP.NETでのイベントの火を避け検出します。 see here

希望します。

+0

ありがとうございました。 – Rocky

+0

私の問題を完全には解決していませんが、データリストに項目を追加しています。データリスト項目をクリックすると、ポストバック呼び出しの問題が発生しています.. – Rocky

0

時には単純なResponse.Redirectが問題ありません。これは基本的に最初のPOSTを別のGET要求に変えます。 POSTされたすべての情報を保持する限り、これは機能します。それ以外の場合は、明らかに利用できなくなります。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // we are in Default.aspx here! 
    Response.Redirect("Default.aspx"); 
} 

これは必ずしも機能しないし、欠点もあります。しかも、これほど洗練された方法ではありません。ルーティングフレームワークを使用すると、よりスムーズなURLが得られる場合があります。

+0

誰かが... – Rocky

関連する問題