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

如何将C# MVC控制器的JSON数据传递到AngularJS并实现列表渲染

解决C# MVC与AngularJS JSON数据传递失败的问题

问题分析

从你的描述来看,你在C# MVC中编写了返回文件名数组的JsonResult方法,但在AngularJS中无法获取数据实现渲染——先后尝试ng-init调用序列化方法报错、三次$http.get请求失败,核心问题出在MVC JsonResult的请求权限限制和AngularJS异步请求的正确处理上。

关键修复点

我们需要从两端同步调整:

  • MVC控制器端:开放GET请求权限
    默认情况下,MVC的JsonResult会拒绝GET请求(防止JSON劫持),所以必须在返回时指定*JsonRequestBehavior.AllowGet*,明确允许GET请求获取数据。另外,原方法标记了[HttpPost],但前端用的是$http.get,需要把请求方式统一改成[HttpGet]。

  • AngularJS前端:使用标准异步回调方式
    旧版的.success()和.error()方法已被弃用,官方推荐使用*.then()*处理Promise回调,且要注意从回调的result.data中提取实际响应数据,而非直接使用result对象。

修正后的完整代码

C# MVC控制器代码

[HttpGet]
public JsonResult GetFileList() 
{ 
    string[] filesArray = Directory.GetFiles("/UploadedFiles/"); 
    // 提取纯文件名,移除完整路径
    for (int i = 0; i < filesArray.Length; i++) 
    { 
        filesArray[i] = Path.GetFileName(filesArray[i]); 
    } 
    // 允许GET请求获取JSON数据
    return Json(filesArray, JsonRequestBehavior.AllowGet); 
}

AngularJS前端代码

// 定义作用域变量存储文件列表
$scope.fileList; 

// 发起GET请求获取数据
$http.get("/Home/GetFileList").then(function (result) { 
    console.log("响应详情:", result);
    // 将响应中的实际数据赋值给作用域变量
    $scope.fileList = result.data; 
});

视图渲染示例

在HTML视图中,即可通过ng-repeat正常渲染数据,也能配合过滤器使用:

<ul>
    <li ng-repeat="file in fileList | filter:searchKeyword">{{ file }}</li>
</ul>

这样调整后,就能成功实现从MVC控制器获取JSON数据,并在AngularJS视图中渲染、过滤的功能了。

内容的提问来源于stack exchange,提问作者Vereonix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:38:54