2013-01-03 68 views
0

我一直在嘗試這一個小時左右;似乎無法弄清楚。 我在aspx頁面上有一個asp:Button,需要完成一些功能,其中一個功能是更改asp:Label的文本。這似乎應該是簡單的和其他在線帖子表明,我正在接近這個問題,但...更改asp:標籤文本背後的C#代碼

問題很簡單,但它殺了我。爲了調試/排除故障,我已將代碼剝離爲非常基礎:

protected void Page_Load(object sender, EventArgs e) 
{ 
    allValidationMsg.Text = "Original text"; 
} 

protected void btnRegister_Click(object sender, EventArgs e) 
{ 
    allValidationMsg.Text = "Text changed"; 
} 

單擊按鈕時,什麼都不會發生。我確信這很簡單,我錯過了。

更新:

<asp:Label id="allValidationMsg" runat="server" height="22px" ForeColor="Red"></asp:Label> 

<asp:Button class="navbutton" ID="btnRegister" runat="server" 
        Text="Register User" OnClick="btnRegister_Click" /> 
+0

您還需要向我們展示標記代碼(aspx文件中的代碼) –

+1

您可以將「btnRegister」的聲明添加到aspx文件?我的第一個猜測是代碼沒有連接到click事件。 –

+0

我認爲Steve Py是正確的。確保按鈕訂閱了右鍵單擊事件。 – briskovich

回答

1

已解決;該問題似乎與使用CompareValidator一起使用。不明白爲什麼,但是當這個驗證器被註釋掉時,問題就解決了。有趣的是,RequiredField和RegularExpression驗證器在同一頁面上不會引起任何問題。

+0

有關爲什麼CompareValidator應該以這種方式受到影響的任何建議將是非常受歡迎的。感謝所有.. –

+0

簡單的解釋是,網頁上有些東西沒有經過驗證或未填寫,或者您在某些控件上分配了原因驗證,而無需將其設置爲真 – MethodMan

+0

,那就是發佈一半代碼的問題 - 你實際上把錯誤的部分留下了,併發布了與你的問題無關的代碼。除非我們從您的帖子中看到,否則我們無法確定是否有驗證器。恭喜! – codingbiz

2

也許你已經忘記綁定按鈕,點擊該處理程序。

你可以做類似的東西在後臺代碼:

mybutton.Click+=btnRegister_Click; 

或者在ASPX:

<asp:Button id="Button1" 
     Text="Click here for greeting..." 
     OnClick="btnRegister_Click" 
     runat="server"/> 
+0

@Puhan ..檢查和雙 - 也檢查這一點;困惑.. –

+0

向你展示標記和代碼。該標籤是否可見設置爲true? – briskovich

+0

客戶端驗證如何?我在這個頁面上有幾個驗證器?在類似的扭曲中,取消按鈕後面有代碼重定向回到主頁。這也沒有發生,但驗證仍在發生。驗證器是否可能導致問題?! –

3

我認爲,當你點擊按鈕,Page_Load中又被稱爲與原文字仍然存在從這個試試這個

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
     allValidationMsg.Text = "Original text"; 
} 

除此之外,我假設你註冊的標記按鈕的事件處理程序,因爲我看不到它的任何地方在您的代碼隱藏

<asp:Button id="Button1" runat="server" OnClick="btnRegister_Click" /> 
+0

@codingbiz ..試過這個,沒有運氣:( –

+1

不這麼認爲..在頁面生命週期中page_load發生在按鈕處理程序Puhan提到它可能是因爲他忘記了綁定按鈕點擊 – ajp

+0

然後在Button_Click處理程序中放置一個斷點並告訴我們在調試模式下發生了什麼 – codingbiz

0

我可以看到你寫在標記(大小寫)中「onclick」而不是「OnClick」。可能這是問題的原因。

UPDATE1 你可以嘗試這樣做(檢查是否回傳作品):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     allValidationMsg.Text = "Original text"; 
    } 
    else 
    { 
     allValidationMsg.Text = "After postback"; 
    } 
} 

如果文本按下按鈕後改變?

UPDATE2此外,請嘗試對文本進行一些更改以瞭解新版本是否真正部署(以排除強大的緩存問題)。

UPDATE3您可以嘗試在代碼隱藏(並從aspx中刪除它)中進行綁定。

+0

@Puhan ..不是。那個標記是自動生成的,但我仍然嘗試過。沒有快樂.. –

+0

仍然沒有變化.. –

+0

這是關於更新1或2?您可以在頁面加載時看到「原始文本」嗎? – MikhailSP

0

嘿,我想我知道它是什麼。在你的標記中,你的標籤看起來像這樣?

<asp:Label ID="Label1" runat="server" >Some text</asp:Label> 

你在你的標記要這樣:

<asp:Label ID="Lable1" runat="server" text ="some text"></asp:Label> 

我有這種情況發生前。如果您將標記更改爲該標記。它應該工作。