web-dev-qa-db-ja.com

ボタンクリックでPage_Load()を回避する方法は?

プレビューと保存の2つのボタンがあります。プレビューボタンの助けを借りて、ユーザーはフォーマットに基づいてデータを表示し、保存することができます。

ただし、プレビューをクリックすると、ajaxcontrol(カレンダー)に接続されている1つのテキストボックスが空になり、ユーザーは保存する前に日付を入力する必要があります。これをどのように処理しますか?プレビューをクリックすると、詳細が表示され、データがレイアウトで表示されます。

<asp:TextBox ID="txtDate" ReadOnly="true" runat="server"></asp:TextBox>
                    <div style="float: right;">
                        <asp:ImageButton ID="imgcalender1" runat="server" ImageUrl="~/images/calendar.png"
                            ImageAlign="Bottom" />
                        <asp:CalendarExtender ID="ajCal" TargetControlID="txtpublishDate" PopupButtonID="imgcalender1"
                            runat="server">
                        </asp:CalendarExtender>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  ValidationGroup="group1" runat="server" ControlToValidate="txtDate"
                            ForeColor="Red" Font-Bold="true" ErrorMessage="*"></asp:RequiredFieldValidator>
                    </div>

<asp:Button ID="btnPreview" runat="server" Text="Preview" OnClick="btnPreview_Click" />
                    <asp:Button ID="btnsubmit" runat="server" ValidationGroup="group1" Text="Save" OnClick="btnsubmit_Click" />
6
Abhishek Ranjan

私が理解していることから、プレビューボタンがポストバックを引き起こしていて、それを望まない場合は、プレビューボタンでこれを試してください。

<asp:button runat="server".... OnClientClick="return false;" />

同様にこれも機能します:

YourButton.Attributes.Add("onclick", return false");

編集:

ユーザーの質問に対する答えは、プレビューボタンのHTMLマークアップの単純な変更だったようです。

CausesValidation="False"
8

Aspxコード(サーバー側)でPage.IsPostback()を使用します。このような:

private void Page_Load()
{
    if (!IsPostBack)
    {
        // the code that only needs to run once goes here
    }
}

このコードは、ページが読み込まれたときにのみfirstを実行し、ユーザーが入力したフォームへの変更を踏まないようにします。

15
tgolisch

上記の「CausesValidation = "False"」と同じ問題と解決策があり、「UseSubmitBehavior = "False"」DID動作しません-それでも「Page_Load」メソッドと呼ばれます)を追加しました。

私にとってうまくいったのは、Page_Loadメソッドに次の行を前もって追加することでした。

if (IsPostBack) return; 

それが誰かを助けるなら私はこれに言及しています(私は上記にコメントするつもりでしたが、私は新しいユーザーであるため、StackOverflowはコメントを許可しませんでした-したがって新しい返信です)。

3
QuasiMatter

あなたはあなたのコードを入れることができます

Page_Init()
{
   //put your code here
}

の代わりに

Page_Load()
{
   //code
}
3
John Adel

これをaspxページのボタンプロパティに追加してみてください。

OnClientClick="return false;"
1
Mike Schwartz