記事内に広告が含まれています。

ASP.NET - JavaScript からポストバック(サンプルあり)

2013年4月24日

JavaScript でポストバックを行う方法として ScriptManager の __doPostBack メソッドがあります。

簡単な実装例

<head runat="server">
    <script type="text/javascript">
        function buttonClick() {
            var value = "test";
            __doPostBack("buttonClick", value);
        }
    </script>
</head>
<div>
    <asp:ScriptManager id="ScriptManager1" runat="server"></asp:ScriptManager>
    <input onclick="buttonClick()" type="button" value="click" />
</div>

__doPostBack メソッドで渡されたパラメータを取得します。Params コレクションからインデクサ指定で要素を取り出すか、Params.Get メソッドを利用します。

protected void Page_Load(object sender, EventArgs e)
{
    if(Request.Params.Get("__EVENTTARGET") != null)
    {
        Debug.WriteLine(Request.Params.Get("__EVENTARGUMENT")); //test
        Debug.WriteLine(Request.Params["__EVENTARGUMENT"]);     //test
    }

    if (Request.Params.Get("__EVENTTARGET") != null)
    {
        Debug.WriteLine(Request.Params.Get("__EVENTTARGET"));   //buttonClick
        Debug.WriteLine(Request.Params["__EVENTTARGET"]);       //buttonClick
    }
}

サンプルアプリケーション

※ サンプルアプリケーションは、.NET Framework 4.8 をターゲットにしていまs。

参考情報

Understanding the JavaScript __doPostBack Function
http://aspalliance.com/articleViewer.aspx?aId=895&pId=-1

ASP.NET __doPostBack の中身
https://watermargin.net/programming/asp-net-__dopostback-in-depth/

-ASP.NET, JavaScript