当通过jQuery设置值时,访问c#中Page load上的Label值

时间:2013-04-12 06:54:24

标签: c# jquery asp.net

我再次发布这个问题,也许这次更准确的描述。

问题是,我使用jQuery设置Label的文本值,它在浏览器上工作正常,但是当我想将它保存到字符串时,它不会保存它。这里是 前端Html代码。

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
        $(window).load(function () {
            var myNewName = "Ronaldo";
           $('#<%= Label1.ClientID %>').text(myNewName);

        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

    </form>
</body>
</html>

这是后端C#代码页面加载

using System;
using System.Web.UI;

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        string mynameCheck = Label1.Text;
        if (mynameCheck=="Ronaldo")
        {
            Response.Write("Yes Name is Fine");
        }
        else
        {
            Response.Write("Name's not Fine");

        }
    }
}

显示的结果是

Name's not Fine
Ronaldo

似乎字符串仍然是空的。有任何渲染问题吗?

5 个答案:

答案 0 :(得分:0)

标签不是输入类型,因此您无法通过服务器端的jquery获取更改的值。您可以使用隐藏字段来实现此目的。

答案 1 :(得分:0)

这应该这样做:

<script type="text/javascript">
    $(window).load(function () {
       if($('#<%= Txt1.ClientID %>').val() != "Ronaldo"){
         var myNewName = "Ronaldo";
         $('#<%= Txt1.ClientID %>').val(myNewName);
         $('#<%= Label1.ClientID %>').text(myNewName);
         $('#<%= Btn1.ClientID %>').click();
       }
    });
</script>

<form id="form1" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:TextBox ID="Txt1" runat="server" style="display:none"></asp:Label>
    <asp:Button ID="Btn1" runat="server" style="display:none" Click="Btn1_Click"></asp:Label>
</form>


protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack)
    {
      Label1.Text=Txt1.Text;

      string mynameCheck = Label1.Text;
      if (mynameCheck=="Ronaldo")
      {
        Response.Write("Yes Name is Fine");
      }
      else
      {
        Response.Write("Name's not Fine");
      }
    }
}

protected void Btn1_Click(object sender, EventArgs e)
{ }

希望有所帮助:)

答案 2 :(得分:0)

在客户端代码(HTML / Javascript)发布之前,您的服务器端代码(c#)无法访问表单数据。

为什么要在PageLoad事件中找到名称?

您可以添加asp:Button附加onClick事件处理程序来阅读asp:Label的值。

答案 3 :(得分:0)

标签不维护视图状态。服务器不会将该信息发回服务器。您可以尝试在Label上显式启用ViewState,但如果这不起作用,则必须将该值存储在隐藏字段中。

答案 4 :(得分:0)

首先致电Page Load event,然后致电JQuery Window.Load event

因此,如果您想在Label中设置任何内容,那么您可以使用onClientClick按钮。

对于前。

<asp:Button ID="btn" runat="server" Text="Click me" OnClientClick="SetClientValues();" />

<script type="text/javascript">
    function SetClientValues() {
        var myNewName = "Ronaldo";        
        $('#<%= Label1.ClientID %>').text(myNewName);
    }
</script>

在服务器端按钮事件中,您可以获得在客户端设置的Label值。

protected void btn_Click(object sender, EventArgs e)
{
        string mynameCheck = Label1.Text;
        if (mynameCheck=="Ronaldo")
        {
            Response.Write("Yes Name is Fine");
        }
        else
        {
            Response.Write("Name's not Fine");

        }
}

将打印是名称很好