javascript - 如何从MVC Controller 向AngularJS Controller 返回消息

标签 javascript angularjs asp.net-mvc error-handling

我需要向用户添加一条警告消息,因此,如果他们尝试插入 session ID == 0的记录,则会返回一条消息,通知他们。

我当前的AngularJS代码用于保存数据,在C#中调用ImportData方法

// Save data to sql database  
$scope.SaveData = function (excelData) {
    $http({
        method: "POST",
        url: "/Home/ImportData",
        data: JSON.stringify(excelData),
        headers: {
            'Content-Type': 'application/json'
        }
    }).then(function (data) {
        if (data.status) {
            $scope.Message = excelData.length + " Record Successfully Inserted";
            $scope.GetData();
        }
        else {
            $scope.Message = "Failed";
        }
    }, function (error) {
        $scope.Message = "Error";
    });
};

C#代码:
 [HttpPost]
 public ActionResult ImportData (List<Meeting_WIP> meeting) {
     bool status = false;
     try {
         if (ModelState.IsValid) {
             using (MeetingEntities db = new MeetingEntities ()) {
                 foreach (var i in meeting) {
                     if (i.MeetingID == 0) {
                         throw new ArgumentException ("Meeting ID cannot be null or empty string", i.MeetingID.ToString ());
                     } else {
                         var compositeKey = db.Meeting_WIP.Find (i.MeetingID, i.AgendaItem);

                         if (compositeKey == null) {
                             // Meeting ID does not exist in database it is a new one 
                             db.Meeting_WIP.Add (i);
                         } else {
                             // Meeting ID already exist in database just update record
                             db.Entry (compositeKey).CurrentValues.SetValues (i.MeetingID);
                             db.Entry (compositeKey).State = EntityState.Modified;
                         }
                     }
                 }

                 db.SaveChanges ();
                 status = true;
             }
         }
     } catch (Exception ex) {
         ExceptionLogging.SendErrorToText (ex);
     }
     return new JsonResult { Data = new { status = status } };
 }

当前,即使excel数据文件包含 session ID == 0,显示的消息也是:
$scope.Message = excelData.length + " Record Successfully Inserted";

当 session ID == 0时如何分辨Angular代码,然后返回错误并显示类似以下内容:
"Meeting ID cannot be zero/null"

谢谢您的帮助。

伊拉斯莫

angularjs代码调试的屏幕快照

debug screen shot

最佳答案

由于当 session ID为零时将引发参数异常,因此应捕获该异常并相应地设置状态和验证消息。

[HttpPost]
  public ActionResult ImportData (List<Meeting_WIP> meeting) {
      bool status = false;
      string message = "";

      try {
          if (ModelState.IsValid)

          {

              using (MeetingEntities db = new MeetingEntities ())

              {

                  foreach (var i in meeting)

                  {

                      if (i.MeetingID == 0)

                      {
                          throw new ArgumentException ("Meeting ID cannot be null or empty string", i.MeetingID.ToString ());
                      } else

                      {

                          var compositeKey = db.Meeting_WIP.Find (i.MeetingID, i.AgendaItem);

                          if (compositeKey == null)

                          {
                              // Meeting ID does not exist in database it is a new one 
                              db.Meeting_WIP.Add (i);
                          } else

                          {
                              // Meeting ID already exist in database just update record
                              db.Entry (compositeKey).CurrentValues.SetValues (i.MeetingID);
                              db.Entry (compositeKey).State = EntityState.Modified;
                          }

                      }

                  }

                  db.SaveChanges ();
                  status = true;
              }
          }
      } catch (Exception ex) {
          ExceptionLogging.SendErrorToText (ex);
      } catch (System.ArgumentException ae) {
          status = false;
          message = "Meeting ID cannot be zero/null";
      }
      return new JsonResult { Data = new { status = status, message = message } };
  }

您可以向验证结果消息的json结果中添加新属性,并将值设置为“ session ID不能为零/空”
if (data.data.status == true) {
    $scope.Message = excelData.length + " Record Successfully Inserted";
    $scope.GetData();
}
else {
    $scope.Message = data.data.message;
}

关于javascript - 如何从MVC Controller 向AngularJS Controller 返回消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61761177/

相关文章:

c# - 在 asp.net mvc 站点上收集统计信息?

asp.net - IIS Express localhost 对于第一个请求加载速度非常慢

asp.net-mvc - 对 ASP.NET Identity 和 IdentityDbContext 感到困惑

javascript - 改变 React 父组件状态

javascript - Handsontable,自定义文本编辑器,复制/粘贴问题

javascript - 捕获句点但不捕获内部链接

javascript - 如何在指令中访问 Controller (从外部文件)的范围?

angularjs - 以 Angular 加入 promise

javascript - 通过jquery获取除最后一个之外的输入值

javascript - Rails : Applications. js当前正确顺序