.NET Framework4.6.1下点击RadGrid行Ajax向C#传值失败求助
解决RadGrid行点击AJAX传值失败问题
针对你遇到的RadGrid行点击后AJAX调用直接进入错误回调的问题,以下是关键修复点及修正后的代码:
核心问题与修复措施
WebMethod必须标记为static
ASP.NET WebForms中,通过AJAX调用的[WebMethod]必须是静态方法,否则无法被正确路由到服务器端处理。AJAX数据需序列化为JSON字符串
由于设置了contentType: "application/json; charset=utf-8",必须使用JSON.stringify()将数据对象转换为JSON字符串,否则服务器无法正确解析请求体内容。数据类型匹配
你传递的"4"是字符串类型,但C#模型中indexValue定义为int类型,直接传递字符串会导致反序列化失败,应改为传递数字4。验证URL路径正确性
确保URL指向正确的ASPX页面(例如页面名为CorpPharmacyList.aspx时,URL应写为"/CorpPharmacyList.aspx/getIndexed")。
修正后的代码
ASPX页面脚本部分
function sendIndex(sender, args) { // 获取点击行的实际索引(替代硬编码值,可选) var rowIndex = args.get_itemIndexHierarchical(); $.ajax({ url: "/CorpPharmacyList.aspx/getIndexed", type: 'POST', contentType: "application/json; charset=utf-8", dataType: 'json', data: JSON.stringify({ "indexValue": rowIndex }), // 或直接传数字4 success: function (data) { console.log("Post successful"); }, error: function (xhr, status, error) { // 打印详细错误信息便于排查 console.log("AJAX错误:", status, error); console.log("服务器响应:", xhr.responseText); } }); }
C#页面代码
public class indexed { public int indexValue { get; set; } } [WebMethod] public static void getIndexed(indexed indexe) // 添加static修饰符 { try { var myVar = indexe.indexValue; // 此处添加业务逻辑 } catch (Exception ex) { // 记录异常信息便于排查 System.Diagnostics.Debug.WriteLine(ex.ToString()); } }
额外提示
- 在错误回调中打印
xhr.responseText可以查看服务器返回的具体错误详情,快速定位问题根源。 - RadGrid的
OnRowClick事件会自动传递sender和args参数,通过args.get_itemIndexHierarchical()可获取点击行的实际索引,无需硬编码值。
内容的提问来源于stack exchange,提问作者datboiluiskrrt
相关产品推荐
相关产品推荐

