Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何执行一次类并使用ASP.net页面中的数据_C#_Sql_Asp.net - Fatal编程技术网

C# 如何执行一次类并使用ASP.net页面中的数据

C# 如何执行一次类并使用ASP.net页面中的数据,c#,sql,asp.net,C#,Sql,Asp.net,我有以下类(UCNewWorkFlow),它调用缓存数据库,检索行并将其添加到字符串数组: public partial class UCNewWorkflow : System.Web.UI.Page { private string Connectioncacha = ""; public UCNewWorkflow() { int temp; if (IsItWorkDay(DateTime.Now)) {

我有以下类(
UCNewWorkFlow
),它调用缓存数据库,检索行并将其添加到字符串数组:

public partial class UCNewWorkflow : System.Web.UI.Page
{
    private string Connectioncacha = "";

    public UCNewWorkflow()
    {
        int temp;

        if (IsItWorkDay(DateTime.Now))
        {
            temp = 21;
        }
        else
        {
            temp = 17;
        }

        try
        {
            CacheConnection CacheConnect = new CacheConnection();
            CacheConnect.ConnectionString = Connectioncacha;
            CacheConnect.Open();

            String SQLtext = @"";

            DataTable table = new DataTable();
            CacheCommand Command = new CacheCommand(SQLtext, CacheConnect);
            CacheDataReader Reader = Command.ExecuteReader();
            string[] inArr = new string[4];
            int k = 0;

            if (Reader.HasRows)
            {
                while (Reader.Read())
                {
                    inArr[k] = Reader["NotYetSeen"].ToString();
                    returnTime(Convert.ToInt32(inArr[k]));
                    k++;
                }
            }
        }
        catch (Exception ce)
        {
        }
    }

    public string returnTime(int inHowMany)
    {
        string strTime = "";

        double future = 0;

        DateTime dt = DateTime.Now;
        if (inHowMany / 2.0 <= 1)
        {
            strTime = "15 mins";
        }
        else if (inHowMany == 0)
        {
            strTime = "<15 mins";
        }
        else if (inHowMany / 2.0 > 1)
        {
            future = Math.Ceiling((inHowMany / 2.0)) * 15;

            DateTime tempdate = dt.AddMinutes(future);

            TimeSpan result = tempdate - DateTime.Now;

            strTime = ToReadableString(result);
        }

        return strTime;
    }
}
目前,我无法从类文件访问标签

如何修改代码,以便只需调用一次类,它就会填充所有四个标签。

您可以这样做

protected void Page_Load(object sender, EventArgs e)
{
    UCNewWorkflow uc = new UCNewWorkflow();
    lblFirstRow.Text = "someString"
}

您正试图在页面的构造函数期间执行此数据库查询,因此在ASP.NET Web窗体页面生命周期中访问这些数组还为时过早。调用构造函数时,这些标签不存在;它们是在页面初始化事件期间创建的


正如NicoTek所建议的,使用Page_Load事件处理程序是更新这些标签的好方法。但是,如果您按照他的方式执行,我看不出您的类继承自System.Web.UI.Page的原因,我建议您重构代码,使此操作和任何其他数据库操作存在于另一个类中。这将允许您重用代码,并防止代码隐藏文件中的混乱和重复。

在我看来,您希望将字符串数组
inArr
作为
UCNewWorkflow
类的属性返回,然后按照@NicoTek的建议将其绑定到加载代码隐藏的页面上的中继器

前面代码上的
中继器
定义应仅包含一个
标签
定义,然后当数据绑定到
中继器时,将为字符串数组中的每个元素创建标签的新实例

有关中继器的更多详细信息,请访问

如果您要发布代码。。请张贴与手头问题相关的完整代码。。例如,如果上面的代码属于一个类。。然后显示完整的类/代码。。另外
string[]inArr=新字符串[4]我将在您当前的类中创建一个类来描述您试图存储信息的对象/结构。我将使用
{get;set;}`在类
自动属性中创建这些字段。一旦您使用
us
@MethodMan创建了
UCNewWorkFlow()
实例,您将做些什么?对不起,我用类更新了我的问题。这就是我需要帮助的地方。类没有返回任何内容,类中的函数返回一个字符串。1)修改类,使其不从页继承。2)考虑使用不同的数据访问选项方法,而不是使用构造函数,这样这个类可以处理所有的数据库操作。3) 在ASP.NET页面中,创建类并调用page_Load事件处理程序中的数据方法。为了更好地从概念上理解这一点,我建议研究什么是数据访问层。在Web表单中用于分离关注点(数据模型、业务逻辑、显示逻辑)的一个好模式是model View Presenter,它也可以帮助您。谢谢。虽然这个代码示例可能会回答这个问题,但最好对您的答案进行一些必要的解释。现在看来,这个答案对未来的读者几乎没有任何价值。
protected void Page_Load(object sender, EventArgs e)
{
    UCNewWorkflow uc = new UCNewWorkflow();
}
protected void Page_Load(object sender, EventArgs e)
{
    UCNewWorkflow uc = new UCNewWorkflow();
    lblFirstRow.Text = "someString"
}