在另一个页面上更新asp:label?

时间:2011-11-24 19:40:13

标签: c# asp.net label

我正在使用后台使用C#的asp.net网站。我希望能够在页面上更新asp:标签,让我们说 Page1.aspx 。我希望根据其他文件夹中类(.cs)中函数的结果进行更新。这可能是 behind.cs

behind.cs

*some other code is here*
bool correct = false;
try
{
    if (_myConn.State == ConnectionState.Closed)
    {
        _myConn.Open();
        myCommand.ExecuteNonQuery();
    }
    if (Convert.ToInt32(myCommand.Parameters["@SQLVAR"].Value) < 1)
    {
        "Invalid Login" // I want to be the text of lblMessage.Text
    }
    else
    {
        correct = true;                 
    }
    _myConn.Close();
}
catch (Exception ex)
{
    "Error connecting to the database" // I want to be the text of lblMessage.Text
}
return correct;

page1.aspx这个

<asp:label runat="server" ID="lblMessage" cssClass="error"></asp:label>

如何更新 page1.aspx *上的asp:标签来自** behind.cs ??

2 个答案:

答案 0 :(得分:2)

您无法直接从其他类访问该标签。 您可以使用错误消息编写带有out参数的TryLogin函数。

在Page1.cs

protected void BtnLogin_Clicked(object s, EventArgs e)
{
    string errMess;
    if(!Behind.TryLogin(out errMess)
       lblMessage.Text = errMess;
}

在behind.cs中

public static bool TryLogin(out string errMess)
{
  *some other code is here*
  errMess = null;
  bool correct = false;
  try
  {
    if (_myConn.State == ConnectionState.Closed)
    {
        _myConn.Open();
        myCommand.ExecuteNonQuery();
    }
    if (Convert.ToInt32(myCommand.Parameters["@SQLVAR"].Value) < 1)
    {
        errMess = "Invalid Login" // I want to be the text of lblMessage.Text
    }
    else
    {
        correct = true;                 
    }
    _myConn.Close();
  }
  catch (Exception ex)
  {
    errMess = "Error connecting to the database" // I want to be the text of lblMessage.Text
  }
  return correct;
}

答案 1 :(得分:1)

您无法通过page1.lblMessage中的代码访问behind.cs成员。有两种方法可以处理它:

  • 对于普通数据,请从string中的代码返回behind.cspage1中的调用函数分配给lblMessage
  • 对于异常事件(例如示例中的无效登录),在代码中抛出异常。在调用behind.cs方法的代码中,捕获异常并将文本分配给lblMessage

在您的代码中,您应该在catch块中添加以下内容:

throw new MyException("Error connection to the database", e);

您必须先创建一个MyException课程。然后在调用代码catch(MyException)中显示文本。如果要在页面代码的一个位置处理所有异常,也可以处理Page.Error事件。 e构造函数的MyException参数意味着将基础异常作为InnerException提供。在调试时,保持原始的技术信息异常始终是有用的。