0

Newbie here, I need help with a website I'm creating.

I have a class that does some analysis on some text that is input by the user, the class then finds an appropriate answer and sends it back to the textbox. (in theory)

Problem is I don't know how I can control and access the textbox on the default.aspx page from a class, all I get is "object reference is required non static field".

I made the textbox public in the designer file yet still no joy. :(

I've also read this: How can I access the controls on my ASP.NET page from a class within the solution? , which I think is along the lines of what I'm trying to achieve but I need clarification/step by step on how to achieve this.

Hope someone can point me in the right direction.

Many thanks, Kal

This is the code I have added to the designer.cs file:

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

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

This is the class method i have created:

public static cleanseMe(string input) {

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

    }

I could just return the cleansedUtt string i know, but is it possible for me to just append this string to the said textbox from this method, within this class?

I also tried it this way, i wrote a class that takes in the name of the textbox and string to append to that textbox. it works BUT only on the default.aspx page and does not recognise the textbox names within the difference classes. The code is as follows:

public class formControl
{
    public static void ModifyText(TextBox textBox, string appendthis)
    {   
        textBox.Text += appendthis + "\r\n";
    } 
3
  • 2
    I need clarification/step by step. but where is your code. what have you tried? Commented Apr 8, 2013 at 16:28
  • this is from the designer.cs file public global::System.Web.UI.WebControls.TextBox TextBox3; public string MyTextBoxText { get { return TextBox3.Text; } set { TextBox3.Text = value; } } Commented Apr 8, 2013 at 16:30
  • Edit your question and add some code so we can see what you're working with. Typically you shouldn't be modifying the designer.cs file Commented Apr 8, 2013 at 16:31

2 Answers 2

2

I would suggest you that do not access the Page Controls like TextBox in your class. It will be more useful and a good practice that whatever functionality your class does, convert them into function which accept the parameters and returns some value and then on the basis of that value you can set the controls value.

So now you have reusable function that you can use from any of the page you want. You do not need to write it for every textbox.

Here I am giving you a simple example

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

Now you can use it simple on your page like this

  Test objTest = new Test();
  bool result=objTest.IsValid(TextBox1.Text);
  if(result)
  {
    TextBox1.Text="Everything is correct";
  }
  else
  {
    TextBox1.Text="Something went wrong";
  }
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks Sachin, I appreciate your assistance. :)
0

If you have your class in the same project (Web Project) the following will work:

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";
    }
}

You can use this from your webform like this:

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

If your class is in a different (class project), you would need to add a reference to System.Web to your project.

1 Comment

Thanks Hanlet, appreciate the assistance. I'll try it and let you know. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.