AngularJs服务和MVC控制器之间发生看似随机的错误

时间:2017-09-19 10:32:56

标签: javascript c# angularjs asp.net-mvc

我目前遇到的问题是我的AngularJs服务在连接到MVC控制器时触发了错误。

我的代码如下:

调用服务的AngularJs Controller函数:

    $scope.SubmitChangeForm = function () {
        $scope.submitted = true;

        ChangeForm.submitapplication($scope.application,
            function (data) {
                $scope.submissionCompleted = true;
            },
            function (data) {
                $scope.errorOccurred = true;
            }
        );
    };

ChangeForm服务:

angular.module('app')
.service('ChangeForm', function ($http) {
    return {
        submitapplication: function (application, success, error) {
            var data = { "app": application };
            $http.post('/applicant/submitapplication', data).success(success).error(error);
        },

        sendschoolemail: function (serviceId, success, error) {
            var data = { "ServiceId": serviceId };
            $http.post('/email/emailschool', data).success(success).error(error);
        },

        sendstudentemail: function (serviceId, success, error) {
            var data = { "ServiceId": serviceId };
            $http.post('/email/emailstudent', data).success(success).error(error);
        }
    }
});

ApplicantController(MVC控制器):

    [Route("submitapplication"), System.Web.Mvc.HttpPost]
    public ActionResult SubmitApplication(Applicant app)
    {
        //ModelState.AddModelError("Test", "Test Error");

        if (!ModelState.IsValid)
        {
            var messages = GetModelMessages(ModelState);

            LogError(messages);

            Response.StatusCode = 500;

            return new JsonResultView("Error occurred", JsonRequestBehavior.AllowGet);
        }

        try
        {
            app.DateSubmitted = System.DateTime.Now;

            var success = _layer.AddApplicant(app);

            if (success)
            {
                SendEmails(app);
            }
            else
            {
                Response.StatusCode = 500;
                LogError("Error occurred writing to database");

                return new JsonResultView("Error occurred", JsonRequestBehavior.AllowGet);
            }

            return new JsonResultView(success, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            LogError(ex.ToString());

            Response.StatusCode = 500;
            return new JsonResultView("Error occurred", JsonRequestBehavior.AllowGet);
        }
    }

周围的Try / Catch是出于某种原因查看控制器根目录是否发生了错误。

表单大部分时间都有效,但有时AngularJs Controller正在处理错误(触发$ scope.errorOccurred = true;行),并且MVC控制器没有记录错误。这会告诉我它正试图调用MVC控制器,但由于某种原因失败。

任何人都可以看到可能导致此问题的原因吗?我对AngularJS和客户端脚本相对较新,所以它可能是非常微不足道的。

我的一位同事设法解决了错误,但日志中没有出现任何内容。我让他以完全相同的表格内容重复提交,这次是有效的。

任何提示都将不胜感激!

0 个答案:

没有答案