0

Scott Hanselman のブログでこれらの Asp.Netインタビューの質問を読んでいて、この質問に出くわしました。彼が話していることを理解できる人はいますか。

4

4 に答える 4

4
<asp:LinkButton ID="lbEdit" CssClass="button" 
    OnClientClick="javascript:alert('do something')" 
    onclick="OnEdit"  runat="server">Edit</asp:LinkButton>

このOnClientClick属性は、PostBack 機能を失わずに JavaScript を追加できることを意味します。これが私のインタビューでの回答です。

于 2008-09-19T08:53:11.383 に答える
2

PostBacksの仕組みを説明する

ポストバックは、ステートレスプロトコルよりもステートフルな動作をエミュレートするWebプロトコルを抽象化したものです。

、クライアント側の両方で

クライアント側では、ポストバックは、ページ上のすべてのコントロールの状態を格納するjavascript呼び出しと非表示フィールドによって実現されます。

およびサーバー側。

サーバー側はイベントのライフサイクルを通過します。そのライフサイクルの一部は、ページ上のすべてのコントロールの状態を維持するためのビューステートのハイドレーションと、__doPostBack呼び出しに渡されたパラメーターに基づくイベントの発生です。クライアント側

PostBack機能を失うことなく、自分のJavaScriptをクライアント側にチェーンするにはどうすればよいですか?

何が必要かによります。99%の時間で機能する最も簡単な方法は、asp:hiddenfieldを使用してクライアント側とサーバー側の間で通信することです。エッジケースの場合、Exendersに入り、MSajaxAPIを介してjavascriptでviewstate/controlstate/clientstateを操作する必要があります。これは、膨大な学習曲線と多くの落とし穴でかなり苦痛です。通常、非表示のフィールドを使用し、手動で__doPostBackを呼び出すだけで十分です。


それが私がその箇条書きに答える方法です。__doPostBackの詳細については、クイックグーグルでたくさんの結果が得られます(怠惰な場合、これは最初のヒットhttp://aspalliance.com/895です)

于 2008-12-01T18:58:03.673 に答える
1

次のような意味ですか。

コードビハインドで:

protected string GetPostBack()
{
    return ClientScript.GetPostBackEventReference(this, null);
}

そしてあなたのaspxで:

<a href="javascript:<%=GetPostBack() %>">Click here to postback</a>
于 2008-09-19T08:12:20.017 に答える
0

彼がここで尋ねているのは、JavaScript 関数を結び付けて、ASP.NET ポストバック機能と連携して動作させる方法だと思います。

つまり、独自の JavaScript を使用してコントロールのイベントをトリガーするにはどうすればよいですか?

ASP.NET クラス ライブラリには、ASP.NET ページに JavaScript をプログラムで追加できるクラス (クラスClientScript内にある) が含まれています。System.Web.UI.Page

これには、 Web コントロールに関連付けられたイベントをトリガーするために ASP.NET が使用するスクリプトGetPostBackEventReferenceを生成するメソッドが含まれています。__doPostBack

それが理にかなっていることを願っています

于 2008-09-19T06:48:18.983 に答える