2013-04-08 80 views
0

新手在這裏,我需要幫助,我正在創建一個網站。C#ASP.NET - 通過類控制/更新textbox.text值

我有一個類對用戶輸入的某些文本進行了一些分析,然後類找到合適的答案並將其發送迴文本框。 (理論上)

問題是我不知道如何控制和訪問default.aspx頁面上的文本框,我得到的是「object reference is required non static field」。

我在設計器文件中公開了文本框,但仍然沒有喜悅。 :(

我也看到了這一點:How can I access the controls on my ASP.NET page from a class within the solution?,我認爲這是一起什麼,我試圖達到的線,但我需要澄清/一步就如何實現這一步

希望有人。 。可以點我在正確的方向

非常感謝, 卡爾

這是我加入到designer.cs文件中的代碼:

公共全球:: System.Web.UI.WebControls .TextBox文本框3;

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

這是類方法,我已經建立:

公共靜態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

'我需要澄清/一步一步'。但你的代碼在哪裏?你有什麼嘗試? – Sachin 2013-04-08 16:28:56

+0

這是來自designer.cs文件 public global :: System.Web.UI.WebControls.TextBox TextBox3; public string MyTextBoxText { get { return TextBox3.Text; } set { TextBox3.Text = value; } } – KAL 2013-04-08 16:30:14

+0

編輯您的問題並添加一些代碼,以便我們可以看到您正在處理的內容。通常,您不應該修改designer.cs文件 – 99823 2013-04-08 16:31:51

回答

2

我建議你不訪問頁面ControlsTextBoxclass。它將會更有用,也是一種很好的做法,無論您的課程的任何功能如何,都可以將它們轉換爲接受參數並返回某個值的函數,然後根據該值設置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"; 
    } 
+0

謝謝Sachin,感謝您的協助。 :) – KAL 2013-04-08 16:41:22

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

你可以這樣使用這個從WebForm中:如果你的類是在不同的(類項目

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

,你需要System.Web添加到您的項目的引用

+0

謝謝Hanlet,感謝幫助。我會嘗試並讓你知道。 :) – KAL 2013-04-08 16:51:17