【问题标题】:Ajax call to C# controller action not working对 C# 控制器操作的 Ajax 调用不起作用
【发布时间】:2017-09-24 04:43:34
【问题描述】:

由于某种原因,我无法使用我的 AJAX 请求将 id 列表传递到我的控制器操作中。我收到以下 404 控制台错误。谁能告诉我为什么会这样?

错误

加载资源失败:服务器响应状态为 404(未找到) http://localhost:8088/Clients/VolDashboard/getViewsAssigned?candidateIds%5B%5D=177

控制器动作

public JsonResult getViewsAssigned(List<long> candidateIds)
    {
        long clientId = webRequestState.ClientId.Value;
        long clientUserId = webRequestState.ClientUserId.Value;
        return Json(clientViewService.getViewsAssignedToCandidates(candidateIds, clientId, clientUserId), JsonRequestBehavior.AllowGet);
    }

AJAX 请求

$.ajax({
            type: "GET",
            url: "../Clients/VolDashboard/getViewsAssigned?" + $.param({ candidateIds: populateSelectedCandidateIds() }),
            success: Success,
            error: Errors
        });

【问题讨论】:

  • public JsonResult getViewsAssigned(List CandidateIds) 不正确。

标签: c# ajax


【解决方案1】:

问题在于您的 C# 方法需要 List&lt;long&gt; 作为参数类型。根据您的网址,您只是发送一个int(可以转换为单个long)。问题是它不是一个集合,所以它无法找到路线。 404 HTTP 代码是正确的。

在您对列表进行 URL 编码的这种情况下,最好的办法可能是将其作为字符串传递。

$.ajax({
    type: "GET",
    url: "../Clients/VolDashboard/getViewsAssigned?" + 
            $.param({ candidateIds: 
               populateSelectedCandidateIds().toString() 
            }),
    success: Success,
    error: Errors
});

那么你需要像这样调整你的 C# 方法:

public JsonResult getViewsAssigned(string candidateIds)
{
    List<long> idList = candidateIds.Split(',').Select(long.Parse).ToList();
    long clientId = webRequestState.ClientId.Value;
    long clientUserId = webRequestState.ClientUserId.Value;
    return Json(clientViewService.getViewsAssignedToCandidates(idList, clientId, clientUserId), JsonRequestBehavior.AllowGet);
}

【讨论】:

    【解决方案2】:

    尝试通过数据属性传递参数:

    var data = populateSelectedCandidateIds();
    $.ajax({
    type: "GET",
    data: {candidateIds: data},
    url: "../Clients/VolDashboard/getViewsAssigned",
    success: Success,
    error: Errors  
    });  
    

    您还可以查看接受的答案here 以获得主要想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多