更改asp:标签文本背后的C#代码

问题描述:

我一直在尝试这一个小时左右;似乎无法弄清楚。 我在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

已解决;该问题似乎与使用CompareValidator一起使用。不明白为什么,但是当这个验证器被注释掉时,问题就解决了。有趣的是,RequiredField和RegularExpression验证器在同一页面上不会引起任何问题。

+0

有关为什么CompareValidator应该以这种方式受到影响的任何建议将是非常受欢迎的。感谢所有.. –

+0

简单的解释是,网页上有些东西没有经过验证或未填写,或者您在某些控件上分配了原因验证,而无需将其设置为真 – MethodMan

+0

,那就是发布一半代码的问题 - 你实际上把错误的部分留下了,并发布了与你的问题无关的代码。除非我们从您的帖子中看到,否则我们无法确定是否有验证器。恭喜! – codingbiz

也许你已经忘记绑定按钮,点击该处理程序。

你可以做类似的东西在后台代码:

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

客户端验证如何?我在这个页面上有几个验证器?在类似的扭曲中,取消按钮后面有代码重定向回到主页。这也没有发生,但验证仍在发生。验证器是否可能导致问题?! –

我认为,当你点击按钮,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

我可以看到你写在标记(大小写)中“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

嘿,我想我知道它是什么。在你的标记中,你的标签看起来像这样?

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

你在你的标记要这样:

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

我有这种情况发生前。如果您将标记更改为该标记。它应该工作。