我正在使用后台使用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 ??
答案 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.cs
,page1
中的调用函数分配给lblMessage
。behind.cs
方法的代码中,捕获异常并将文本分配给lblMessage
。在您的代码中,您应该在catch块中添加以下内容:
throw new MyException("Error connection to the database", e);
您必须先创建一个MyException
课程。然后在调用代码catch(MyException)
中显示文本。如果要在页面代码的一个位置处理所有异常,也可以处理Page.Error
事件。 e
构造函数的MyException
参数意味着将基础异常作为InnerException
提供。在调试时,保持原始的技术信息异常始终是有用的。