我有问题通过$ http传递angular $ scope.variable到MVC控制器

时间:2015-06-22 04:08:19

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

我的最终目标是动态更新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);
    }

编辑:更新变量场景到scenarioid,因为它应该是作用域名称。

1 个答案:

答案 0 :(得分:0)

将ajax呼叫发布数据更改为

数据:{&#34; scenarioID&#34;:$ scope.scenarioid}

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