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();
}
问题是你的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()