更改asp:标签文本来自C#代码

时间:2013-01-03 22:55:19

标签: c# asp.net

我一直在尝试这个一个小时左右;似乎无法搞清楚。 我在aspx页面上有asp:Button,需要完成几个函数,其中一个是更改asp:Label的文本。这似乎应该很简单,其他在线帖子表明我正在接近问题,但是......

问题很简单,但这让我很伤心。为了调试/排除故障,我已经将代码剥离回基础:

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" />

5 个答案:

答案 0 :(得分:3)

我认为当您单击Button时,会再次调用Page_Load并保留原始文本。试试这个

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

除此之外,我假设您在Markup中注册了按钮的事件处理程序,因为我在代码隐藏中的任何地方都看不到它

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

答案 1 :(得分:2)

可能您忘记将按钮单击绑定到处理程序。

你可以在代码隐藏中做到这样的事情:

mybutton.Click+=btnRegister_Click;

或者在aspx中:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我可以看到你在标记(case)中写了“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中删除它)。

答案 4 :(得分:0)

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

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

您希望在标记中使用此功能:

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

之前我曾经遇到过这种情况。如果您将标记更改为该标记。它应该工作。