asp:別のページのラベルを更新しますか?

私はバックグラウンドでC#を使用してasp.net Webサイトで作業しています。私は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


page1.aspx * from ** behind.cs のasp:ラベルを更新するにはどうすればよいですか?

1

2 答え

別のクラスのラベルに直接アクセスすることはできません。 エラーメッセージと共に出力パラメータを持つ 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;
}
2
追加された
完璧に説明されています。どうもありがとう。 =]
追加された 著者 HGomez90,

behind.cs のコードから page1.lblMessage メンバーにアクセスする簡単な方法はありません。それを処理するには2つの方法があります:

  • 通常のデータの場合、 page1 の呼び出し関数が lblMessageに割り当てる behind.cs のコードから
  • 例外的なイベント(例では無効なログインなど)では、コードに例外をスローします。 behind.cs メソッドを呼び出すコードでは、例外をキャッチしてテキストを lblMessage に割り当てます。

あなたのコードでは、catchブロックに次のものを追加するべきです:

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

最初に MyException クラスを作成する必要があります。次に、呼び出しコードで catch(MyException)を呼び出し、テキストを表示します。ページコードの1か所ですべての例外を処理する場合は、 Page.Error イベントを処理することもできます。 MyException コンストラクタの e パラメータは、基礎となる例外を InnerException として提供するものです。デバッグするときには、元来、技術的に有益な例外を回避することは常に有用です。

1
追加された