C#ASP.NET - 通过类控制/更新textbox.text值

时间:2013-04-08 16:26:27

标签: asp.net class textbox

新手在这里,我需要帮助我正在创建的网站。

我有一个类对用户输入的某些文本进行一些分析,然后该类找到一个合适的答案并将其发送回文本框。 (理论上)

问题是我不知道如何从类中控制和访问default.aspx页面上的文本框,我得到的是“对象引用是必需的非静态字段”。

我在设计器文件中公开了文本框,但仍然没有乐趣。 :(

我也读过这个:How can I access the controls on my ASP.NET page from a class within the solution?,我认为这与我想要达到的目标一致,但我需要澄清/逐步实现这一目标。

希望有人能指出我正确的方向。

非常感谢, 卡尔

这是我添加到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";
    } 

2 个答案:

答案 0 :(得分:2)

我建议您不要访问Controls中的TextBoxclass。无论您的类的功能是什么,将它们转换为接受参数并返回一些值的函数,然后根据该值设置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";
  }

答案 1 :(得分:0)

如果您在同一个项目( Web Project )中有,则以下内容将起作用:

public class Test
{
    public Test()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public static void ValidateTextBox(System.Web.UI.WebControls.TextBox txt)
    {
        //validation logic here
        if (txt != null)
            txt.Text = "Modified from class";
    }
}

您可以在网络表单中使用以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    Test.ValidateTextBox(this.txt);
}

如果您的班级位于不同的(班级项目),则需要向您的项目添加参考System.Web