2

runat サーバーに設定されている aspx ページに div があります。

<div class="article-container" runat="server" id="divArticleContainer"></div>

この div には、静的メソッドを介してユーザー コントロールが追加されます。

public static void LoadCurrentArticle(int index)
    {
        divArticleContainer.Controls.Clear();
        Page pg = new Page();
        string path = @"/Frontend/Controls/Article/ArticleItem.ascx";
        ArticleItem control = (ArticleItem)pg.LoadControl(path);
        control.Functionality.article = Functionality.articles.ElementAt(index);
        divArticleContainer.Controls.Add(control);
    }

基本的に簡単な概要を説明するために、私のプログラムはニュース記事のリストをロードしています。タッチ ジェスチャ (左または右へのスワイプ) では、Web メソッド GetNext() および GetPrevious() への ajax 呼び出しにより、リスト内の次の項目または前の項目に移動します。

[WebMethod]
    public static void GetNext(int index)
    {
        int idx = index;
        idx++;
        if (idx < Functionality.articles.Count())
        {
            LoadCurrentArticle(idx);
            Functionality.index = idx;
        }
        else
        {
            idx = 0;
            LoadCurrentArticle(idx);
            Functionality.index = idx;
        }
    }

    [WebMethod]
    public static void GetPrevious(int index)
    {
        int idx = index;
        idx--;
        if (idx >= 0)
        {
            LoadCurrentArticle(idx);
            Functionality.index = idx;
        }
        else
        {
            idx = Functionality.articles.Count() - 1;
            LoadCurrentArticle(idx);
            Functionality.index = idx;
        }
    }

私の主な問題は、「divArticleWrapper」が null 参照例外を返しているという事実です。この問題の回避策はありますか? ここに画像の説明を入力

4

1 に答える 1

4

静的メソッドでは、ページ コントロールにアクセスできません divArticleWrapper...

静的メソッドから非静的コントロールにアクセスすることはできません。

静的メソッドは静的変数にのみアクセスできます..

編集

静的メソッドは、インスタンスの状態 (非静的コントロールなど) にアクセスできません。メソッド宣言から static を削除するか、メソッドへの引数としてコントロールへの参照を渡します。

private static void YourStaticMethod(HtmlControl div) 
{    
 //than do your task
} 

...そしてそれを次のように呼び出します:

YourStaticMethod(divArticleWrapper); 
于 2012-04-26T10:48:39.537 に答える