1

追加されたaspxページにHTMLをレンダリングするカスタムサーバーコントロールがあります。

    protected override void RenderContents(HtmlTextWriter output)
    {
        Text = GetHTMLContent();

        output.Write(Text);
    }

GetHTMLContent()は、いくつかのHTMLを再調整します。

<div id="panel" onMouseOver="hide"><table><tr><td>Something Here</td></tr></table></div>

そして、このサーバーコントロールに埋め込まれたリソースであるjavascriptファイルがあります。このjavascriptファイルには、次のような関数が含まれています。

    function hide(){
         document.getElementById("panel").visible = false;
    }

このようなaspxページにカスタムコントロールを追加します

<cc1:CControl ID="Div" runat="server"></cc1:CControl>

ブラウザで開くと、HTMLコンテンツは正常にレンダリングされますが、JavaScriptが機能している必要があります。

私の質問は、カスタムコントロールに埋め込まれたjavascriptファイルにある関数を、カスタムコントロールがロードされるaspxページでどのように機能させることができるかということです。

ありがとう

4

2 に答える 2

1

いくつかの方法があります。まず、プロパティを持つことができますOnClientHide="hide"。このプロパティは、コールバックとして呼び出すメソッドの名前を定義します。コントロールは、onmouseoverレンダリング中にこれをクライアントイベントハンドラーに渡すことができます。

または:次のように、コントロールにJavaScriptをブラウザに書き込んでもらいます:http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx

編集

この例も確認してください:http ://www.karpach.com/Custom-ASP-NET-server-control-with-embedded-resources.htm

于 2012-03-20T12:41:11.583 に答える
0

ブライアンメインが言ったことに加えて、非表示にするJavaScriptは正しくありません。そのはず:

function hide()
{
    document.getElementById("panel").style.display = "none";
    OR
    document.getElementById("panel").style.visibility = "hidden";
} 
于 2012-03-20T12:50:12.453 に答える