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”返回一个空引用异常。有解决这个问题的方法吗? 在此处输入图像描述

4

1 回答 1

4

在静态方法中,您无法访问页面控件 divArticleWrapper...

您不能从静态方法访问非静态控件。

静态方法只能访问静态变量..

编辑

静态方法不能访问实例状态(例如非静态控件)。从方法声明中删除静态,或者将控件的引用作为参数传递给方法:

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

...并这样称呼它:

YourStaticMethod(divArticleWrapper); 
于 2012-04-26T10:48:39.537 回答