You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework4.6.1下点击RadGrid行Ajax向C#传值失败求助

解决RadGrid行点击AJAX传值失败问题

针对你遇到的RadGrid行点击后AJAX调用直接进入错误回调的问题,以下是关键修复点及修正后的代码:

核心问题与修复措施

  1. WebMethod必须标记为static
    ASP.NET WebForms中,通过AJAX调用的[WebMethod]必须是静态方法,否则无法被正确路由到服务器端处理。

  2. AJAX数据需序列化为JSON字符串
    由于设置了contentType: "application/json; charset=utf-8",必须使用JSON.stringify()将数据对象转换为JSON字符串,否则服务器无法正确解析请求体内容。

  3. 数据类型匹配
    你传递的"4"是字符串类型,但C#模型中indexValue定义为int类型,直接传递字符串会导致反序列化失败,应改为传递数字4。

  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:35:18