0

初心者ですが、作成中の Web サイトについてサポートが必要です。

ユーザーが入力したテキストを分析するクラスがあり、クラスは適切な回答を見つけてテキストボックスに送り返します。(理論的には)

問題は、クラスから default.aspx ページのテキスト ボックスを制御およびアクセスする方法がわからないことです。「オブジェクト参照には非静的フィールドが必要です」というメッセージしか表示されません。

テキストボックスをデザイナーファイルで公開しましたが、まだ喜びはありません。:(

これも読みました:ソリューション内のクラスから ASP.NET ページのコントロールにアクセスするにはどうすればよいですか? 、これは私が達成しようとしていることの線に沿っていると思いますが、これを達成する方法について明確化/段階的な説明が必要です。

誰かが私を正しい方向に向けてくれることを願っています。

どうもありがとう、カル

これは、designer.cs ファイルに追加したコードです。

public global::System.Web.UI.WebControls.TextBox TextBox3;

    public string MyTextBoxText
    {
        get
        {
            return TextBox3.Text;
        }
        set
        {
            TextBox3.Text = value;
        }
    }

これは私が作成したクラスメソッドです:

public static cleanseMe(文字列入力) {

        string utterance = input;
        string cleansedUtt = Regex.Replace(utterance, @"[!]|[.]|[?]|[,]|[']", "");
        WebApplication1._Default.TextBox3.text = cleansedUtt;

    }

私が知っている cleansedUtt 文字列を返すことはできますが、このクラス内で、このメソッドから上記のテキストボックスにこの文字列を追加することは可能ですか?

私もこの方法で試してみました。テキストボックスの名前とそのテキストボックスに追加する文字列を受け取るクラスを作成しました。ただし、default.aspxページでのみ機能し、異なるクラス内のテキストボックス名を認識しません。コードは次のとおりです。

public class formControl
{
    public static void ModifyText(TextBox textBox, string appendthis)
    {   
        textBox.Text += appendthis + "\r\n";
    } 
4

2 に答える 2

2

Controlsのようにページにアクセスしないことをお勧めTextBoxしますclass。クラスが行う機能が何であれ、それらをパラメーターを受け入れて値を返す関数に変換し、その値に基づいて値を設定できるようにすることは、より便利で良い方法ですcontrols

これreusable functionで、任意のページから使用できるようになりました。テキストボックスごとに書く必要はありません。

ここでは、簡単な例を示します

public class Test
{
   public bool IsValid(string value)
   {
       // Your logic 
       return true;
   }
}

これで、このようにページで簡単に使用できます

  Test objTest = new Test();
  bool result=objTest.IsValid(TextBox1.Text);
  if(result)
  {
    TextBox1.Text="Everything is correct";
  }
  else
  {
    TextBox1.Text="Something went wrong";
  }
于 2013-04-08T16:37:54.000 に答える