Ajax函数,用于将项目列表检索到asp.net中的C#WebMethod
本文关键字:asp net 中的 C#WebMethod 检索 列表 函数 用于 项目 Ajax | 更新日期: 2023-09-27 17:58:45
我在Asp.net页面中有以下项目列表(示例):
<ul id="lstFruits">
<li id="fruit" value="1">Banana</li>
<li id="fruit" value="2">Apple</li>
<li id="fruit" value="3">Melon</li>
<li id="fruit" value="4">Pineapple</li>
<li id="fruit" value="5">Grape</li>
</ul>
我让这个列表在页面中可以编辑,所以我想构建一个ajax/javascript函数来调用CodeBehind中的C#Web方法,该方法将这个列表作为参数发送。此函数将通过asp:LinkButton
调用。
我的问题是:如何编写这个ajax函数?(我做了一些例子,但没有成功)如何将此功能与按钮联系起来?
编辑:
我试着做这个ajax函数:
$("#btnSave").click(function () {
$.ajax({
url: "@FruitsList.aspx/SaveFruitsList",
data: "{" + 'fruits:' + lstFruits + "}",
type: 'POST',
contentType: "application/json",
success: function (data) {
alert("Fruits saved successively.");
},
});
});
按钮为:
<asp:LinkButton ID="btnSave" runat="server" CssClass="button" Text="Save" />
注意:我尝试使用OnClick
事件,但没有成功。
在codeehind(FruitsList.aspx。cs)中,我不知道如何定义webmethod参数。这个想法是接收一个与水果对应的id列表(或数组),并将它们保存在数据库中。
尝试将数据参数更改为:
data: JSON.stringify({fruits: lstFruits}),
此外,您的LinkButton onclick也不起作用,因为它是一个asp服务器控件。ID将以不同的方式呈现,并且它将尝试在单击时进行回发。
尝试更改链接按钮,使onclientclick返回错误以防止回发:
<asp:LinkButton ID="btnSave" runat="server" onClientClick="someFunctionName();return false;" CssClass="button" Text="Save" />
然后将onclick函数替换为someFunctionName(),以便它在单击链接按钮时调用它,并且不会回发
回答您对我之前回答的评论。您需要获得列表元素ID的列表。使用jquery,您可以在ajax调用之前在按钮单击函数中执行此操作:
var lstFruits = [];
alert("hello");
$("#lstFruits li").each(function() {
lstFruits.push($(this).text());
});
这将把所有的水果(bannana apple等)放入一个数组中,传递到webmethod中。
您的web方法在c#中应该是这样的。在顶部声明using以使用webmethods。
using System.Web.Services;
[webmethod()]
public static string SaveFruitsList(List<string> fruits) {
do something
}