新手在这里,我需要帮助我正在创建的网站。
我有一个类对用户输入的某些文本进行一些分析,然后该类找到一个合适的答案并将其发送回文本框。 (理论上)
问题是我不知道如何从类中控制和访问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";
}
答案 0 :(得分: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";
}
答案 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
。