1. ホーム
  2. javascript

[解決済み] webform_DoPostBackWithOptions() は何をするのですか?

2022-01-30 06:46:36

質問

このように宣言されたボタンがあります。

<asp:Button id=Send runat="server" EnableViewState="False" 
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>

しかし、ブラウザでInspect Elementを実行すると、次のように表示されます。

<input type="submit" class="Button" title="Email me this report" 
id="ctl03_Toolbar_Send" onclick="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions("ctl03$Toolbar$Send","", true, "", "";, false, false))" 
value="Email me this report" name="ctl03$Toolbar$Send">

onclickイベントはどこから来るんだろう?どうなっているんだろう?

よろしくお願いします。

どのように解決するのですか?

ButtonサーバーコントロールにPostBackUrlプロパティを設定した場合、それはクロスページ投稿であり、通常の__DoPostBack()の代わりにasp.net frameworkが"WebForm_DoPostBackWithOptions"を追加することを意味します。このボタンに "PostBackUrl" プロパティが設定されているかどうかを確認してください。

<asp:Button id=Send runat="server" EnableViewState="False" PostBackUrl="~/Page2.aspx"
ToolTip="Email me this report" CssClass="Button" Text="Email me this report">
</asp:Button>

あなたのケースでは、"PostBackUrl"を設定していない場合は、ASP.NETフレームワークは、ボタンコントロールのデフォルトでこれを追加しないので、これは別のコントロールがOnClick属性値を設定しなければならないことを意味しますおそらく次の sever side コードを使って -。

    PostBackOptions myPostBackOptions = new PostBackOptions(this);
    myPostBackOptions.ActionUrl = "Page2.aspx";
    myPostBackOptions.AutoPostBack = false;
    myPostBackOptions.RequiresJavaScriptProtocol = true;
    myPostBackOptions.PerformValidation = true;

    // Add the client-side script to the HyperLink1 control.
    Button1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions);