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"
}