0

コードビハインドに次のコードがあります。

if (Request.QueryString["category"] == "9")
{
    HtmlControl downloadableProducts = (HtmlControl)Page.FindControl("downloadableProducts");
    downloadableProducts.Style.Add("display", "none");
}

次のエラーが発生しています。

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。this である43行目downloadableProducts.Style.Add("display", "none");

私のdivは次のようになります:

<div id="downloadableProducts" runat="server">
    <a href="#">Downloadedable Products</a>
</div>

私は何を間違っていますか?

コードビハインドからこの行を削除すると:

HtmlControl downloadableProducts = (HtmlControl)Page.FindControl("downloadableProducts");

次のエラーが表示されます。

「downloadableProducts」という名前は、現在のコンテキストには存在しません

4

2 に答える 2

0

downloadableProductsはすでにサーバーで実行されているため、42行目を削除できるはずです。以下にコメントを付けました。

if (Request.QueryString["category"] == "9")
{
    //HtmlControl downloadableProducts  = HtmlControl)Page.FindControl("downloadableProducts");
    downloadableProducts.Style.Add("display", "none");
 }

これは私のために働いた...

于 2012-06-04T20:22:26.240 に答える
0

DIV が ASPX ファイル ( <div id="downloadableProducts" runat="server">) で直接定義されているようです。したがって、電話をかける必要はまったくありませんFindControl()this.downloadableProductsコントロールに直接アクセスできるようにする必要があります。

注: これは、コントロールがコード ビハインドと同じクラスで定義されていることを前提としています。たとえば、DIV が で定義されてFoobar.aspxいて、コードを で書いているとしますFoobar.aspx.cs。(これらのファイルは両方とも単一のクラスを構成しますFoobar:)

対照的に、DIV が で定義されている場合Fred.ascx、ファイルから直接アクセスすることはできませんBarney.ascx.cs。(これらの 2 つのファイルは、2 つの異なるクラスを定義しています:FredBarney)

于 2012-06-04T20:24:52.223 に答える