c#如何从数组类型Webmethode访问Asp.net标签值

本文关键字:Asp 访问 net 标签 Webmethode 类型 数组 | 更新日期: 2023-09-27 18:09:47

我想从jquery调用数组类型方法,所以我写了下面的代码。我还写了一个Web方法。我想知道如何通过ASP。. NET标签控件的值到'GetMessages'方法的参数?

<script type="text/javascript">
        $(document).ready(function () {           
            $("#tblCustomers tbody tr").remove();
            $.ajax({
                type: "POST",
                url: "GetDataByJquery.aspx/GetMessages",
                data: '{roomId: "' + $("#lblRoomId").val() + '" }',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    response($.map(data.d, function (item) {
                        var rows = "<tr>"
                    + "<td class='customertd'>" + item.Username + "</td>"
                    + "<td class='customertd'>" + item.Sex + "</td>"
                    + "<td class='customertd'>" + item.Text + "</td>"
                    + "<td class='customertd'>" + item.TimeStamp + "</td>"
                    + "<td class='customertd'>" + item.UserID + "</td>"
                    + "</tr>";
                        $('#tblCustomers tbody').append(rows);
                    }))
                },
                failure: function (response) {
                    alert(response.d);
                }
            });
        });    
    </script>

这是Web方法。我无法将标签控件值传递给下面的Webmethod。

[WebMethod]
        public static Messages[] GetMessages(string roomId)
        {
            List<Messages> messages = new List<Messages>();           
            string strConnString = ConfigurationManager.ConnectionStrings["LinqChatConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(strConnString))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    string query = "[Get_Messages]";
                    SqlCommand cmd = new SqlCommand(query);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@roomId", roomId);
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Messages message = new Messages();
                        message.Username = reader.GetString(0);
                        message.Sex = reader.GetString(1);
                        message.Text = reader.GetString(2);
                        message.TimeStamp = reader.GetString(3);
                        message.UserID = reader.GetString(4);
                        messages.Add(message);
                    }
                }
            }
            return messages.ToArray();
        }

c#如何从数组类型Webmethode访问Asp.net标签值

问题是你的JQuery无法找到标签的ID所以返回undefined

当你使用runat="server"时,渲染的id可能不是'lblRoomId'。

在渲染后检查标签Id并在

中使用
 data: '{roomId: "' + $('#<%=lblRoomId.ClientID%>').text();  + '" }',

,将.Val()改为.text()

,同时去掉visible="false"代替style="display:none;"

使用$("[id = ' lblRoomId ']美元").val()而不是$ (" # lblRoomId ") .val()。

正如Tom所评论的那样,具有Visible = "false"的元素将无法在DOM上使用。将其删除并通过style="display:none"隐藏

.val()从输入控件获取值,但标签不是输入控件。您应该将.val()替换为.html(),它将工作。

如果你的标签是asp:Label(服务器端控制),那么使用

$("[id$=lblRoomId]").html()