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

如何在MVC视图中使用AngularJS/AJAX展示控制器返回的后端数据

实现方案

首先确认你的MVC后端已经可以正常返回JSON格式的PDA状态数据,我们可以按照以下步骤改造原有Razor视图,用AngularJS+AJAX实现数据拉取和渲染:

第一步:调整后端控制器,新增JSON数据接口

在你现有CRUD逻辑所在的控制器中,新增一个专门给前端提供JSON数据的接口,示例代码如下:

// 示例控制器名假设为PDAStatusController
public ActionResult GetOutstandingPDA()
{
    // 这里替换为你现有的查询未归还PDA的逻辑,过滤IsReturn==false的数据
    var data = db.PDAStatus.Where(x => x.IsReturn == false).ToList();
    return Json(data, JsonRequestBehavior.AllowGet);
}

第二步:改造原有Razor视图

2.1 引入AngularJS依赖

在视图头部引入本地存放的AngularJS脚本文件即可。

2.2 替换原有Razor渲染逻辑为AngularJS语法

完整改造后的视图代码如下:

<!-- 给根元素添加ng-app指令,声明Angular应用 -->
<div ng-app="pdaApp" ng-controller="pdaController" class="row justify-content-center">
    <div class="col-md-12">
        <h2>查看未归还PDA</h2>
        <div class="panel">
            <div class="panel-heading">
                <div class="row">
                    <div class="col-md-12">
                        <a href="#" class="btn btn-sm btn-primary pull-left"><i class="fa fa-plus-circle"></i>新增</a>
                    </div>
                </div>
            </div>
            <div class="panel-body table-responsive">
                <div>
                    <table class="table">
                        <thead>
                            <tr>
                                <th scope="col">操作</th>
                                <th scope="col">员工工号</th>
                                <th scope="col">员工姓名</th>
                                <th scope="col">PDA条码</th>
                                <th scope="col">领用日期</th>
                                <th scope="col">归还日期</th>
                                <th scope="col">剩余天数</th>
                            </tr>
                        </thead>
                        <tbody>
                            <!-- 用ng-repeat替代Razor的foreach循环,遍历pdaList数组 -->
                            <tr ng-repeat="item in pdaList">
                                <td>
                                    <ul class="action-list">
                                        <li><a href="/PDAStatus/Update/{{item.Id}}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></li>
                                        <li><a href="/PDAStatus/Delete/{{item.Id}}" class="btn btn-danger"><i class="fa fa-times"></i></a></li>
                                    </ul>
                                </td>
                                <td>{{item.EmployeeCardNo}}</td>
                                <td>{{item.EmployeeName}}</td>
                                <td>{{item.PDABarcode}}</td>
                                <td>{{item.WithdrawDate | date:'yyyy-MM-dd'}}</td>
                                <td>{{item.ReturnDate | date:'yyyy-MM-dd'}}</td>
                                <!-- 前端计算剩余天数 -->
                                <td>{{Math.floor((new Date(item.ReturnDate) - new Date())/(1000*60*60*24))}} 天</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// 定义Angular应用
var app = angular.module('pdaApp', []);
// 定义控制器,注入$http服务用于发送AJAX请求
app.controller('pdaController', function($scope, $http) {
    // 页面加载时请求后端数据
    $http.get('/PDAStatus/GetOutstandingPDA')
    .then(function(response) {
        // 将返回的数据赋值给$scope的pdaList变量,用于页面渲染
        $scope.pdaList = response.data;
    }, function(error) {
        console.log('数据请求失败:', error);
    });
    // 绑定Math对象到作用域,方便页面计算天数
    $scope.Math = window.Math;
});
</script>

注意事项

  • 代码里的接口路由/PDAStatus/GetOutstandingPDA需要和你后端实际的控制器名、接口名保持一致
  • 如果后端返回的日期是时间戳格式,你可以在AJAX请求成功的回调里先统一转换成日期格式再赋值给$scope.pdaList
  • 后续新增、编辑、删除的操作也可以通过$http.post/put/delete方法调用后端对应的CRUD接口,操作完成后重新拉取数据更新页面即可,无需刷新整个页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:36:04