【问题标题】:I am having problems with passing angular $scope.variable via $http to MVC controller我在通过 $http 将角度 $scope.variable 传递给 MVC 控制器时遇到问题
【发布时间】:2015-09-07 10:28:09
【问题描述】:

我的最终目标是根据从我的数据库接收到的数据动态更新我的 html 页面上的无序列表,而无需重新加载页面。

我的第一步是从数据库中获取列表

<div ng-init="scenarioid='@Model.SCENARIOID'">

将尝试在我的 .cshtml 页面的测试 div 中执行 ng-repeat

<div id="test">

</div>

我在将数据传回我的 MVC 控制器时遇到问题。

我试过了

'@Url.Action("ConfirmedCorrectList", "Content", "$scope.scenarioid")'

'@Url.Action("ConfirmedCorrectList", "Content", "{{scenarioid}}")'

'@Url.Action("ConfirmedCorrectList", "Content")/$scope.scenarioid'

'@Url.Action("ConfirmedCorrectList", "Content")/{{scenarioid}}'

由于 MVC 控制器始终将 string scenarioID 视为 null,因此似乎没有任何工作,现在我试图将 data: something 传递回我的 MVC 控制器,但它再次始终显示为 null。

我请求帮助理解并帮助将我的变量传递回我的 MVC 控制器,以及一种确认数据已成功返回到我的 cshtml 页面的方法。

这是我的 Angular 模块

    angular.module('Details', ['ngRoute', 'ngResource'])
        .controller('DetailsMainCtrl', ['$scope', '$http', '$window', function ($scope, $http ,$window) {

            $scope.$watch('pfsscenarioid', function () {
                console.log('AngularJS $scope.pfsscenario ID: ' + $scope.pfsscenarioid);
            });

            $scope.$evalAsync(function () {
                $http({
                    method: 'GET',
                    url: '@Url.Action("ConfirmedCorrectList", "Content")',
                    data: { scenarioID: {{scenarioid}} }
                })
                .success(function (data, status) {
                    $scope.status = status;
                    $scope.data = data;
                    $scope.$watch('data', function () {
                        console.log('Data Returned by $http: ' + $scope.data);
                    });
                }).error(function (data, status) {
                    $scope.data = data || "Request failed";
                    $scope.status = status;
                });

我的控制器上的 JsonResult

    public JsonResult ConfirmedCorrectList(string scenarioID)
    {
        //find the scenario by scenario ID
        Scenario Scenario = db.Scenarios.Find(scenarioID);

        //create object of all who have confirmed the scenario correct so far.
        var result = Scenario.ConfirmedCorrectBies
            .OrderBy(x => x.DateConfirmed);

        //return JSON object of result
        return Json(result, JsonRequestBehavior.AllowGet);
    }

编辑:将变量场景更新为场景ID,因为它应该是范围名称。

【问题讨论】:

    标签: jquery asp.net-mvc angularjs asp.net-mvc-5


    【解决方案1】:

    将 ajax 调用发布数据更改为

    数据:{ "scenarioID": $scope.scenarioid }

    这里 scenarioid 是用于生成模型的模型变量。 或者它可以是 $scope.scenario.scenarioid

    【讨论】:

    • data: { scenarioID : {{scenarioid}} } 更改为 data: {"secenarioID": $scope.scenarioid } 仍然从 MVC 控制器获得 'System.NullReferenceException'string scenarioID 被调试器显示为 null,因此 result 永远不会被填充。检查了检查元素,它似乎也没有填充$scope.scenarioid?我需要一个 $scope.$watch 来等待它被填充吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多