【问题标题】:ASP.NET Web API Controller Update RowASP.NET Web API 控制器更新行
【发布时间】:2016-07-08 17:41:56
【问题描述】:

我在弄清楚如何仅更新 ASP.NET 中控制器中的一行时遇到问题。我正在尝试向我创建的 Web API 发送一个发布请求并且该请求通过但不是只更新一行,而是更新我试图在我的 SQL 中操作的表中的所有行(列目标中的所有行)数据库。任何有关此问题的帮助将不胜感激。我正在使用 AngularJS 中的 $http 服务发送发布请求。

ASP.NET C#

    public class patient_goalsController : ApiController
    { 
        .
        .
        .

        //POST: api/goals/update/1
        [Route("Api/goals/update/{id}")]
        public void UpdatePatientGoal(int id, patient_goals patient_goals)
        {
            var goals = (from p_goal in db.patient_goals
                        where patient_goals.id == id
                        select p_goal);
            foreach(patient_goals row in goals)
            {
                row.goal = patient_goals.goal;
            }


        }

        .
        .
        .

   }

AngularJS

$scope.updateGoal = function(goal){
goal.editing = false;
console.log(goal.id);
var data = {"id": goal.id, "goal": goal.goal}
$http({
  method: "POST",
  url: urlBase + "/goals/update/" + goal.id,
  data: data,
}).then(function error(response) {
  $scope.error = response.statusText;
  console.log(response.statusText);
});

数据库

id (int)
goal (text)

【问题讨论】:

    标签: javascript c# asp.net angularjs asp.net-web-api


    【解决方案1】:

    只需找到您想要的单个连接实体,进行编辑,然后保存更改。

    [Route("Api/goals/update/{id}")]
     public void UpdatePatientGoal(int id, patient_goals)
     {
          var goal =  db.patient_goals.FirstOrDefault(x => x.id == id);
    
          if(goal != null)
          {
              goal.goal  = patient_goals.goal;
              db.SaveChanges();
          }
      }
    

    【讨论】:

    • 谢谢一百万,这解决了我的问题。我对 ASP.NET 很陌生,所以我真的不知道进行查询的最佳方法。
    • @user3704351 没问题,很高兴它有帮助。
    【解决方案2】:

    我真的不知道您的数据库架构的详细信息,但看起来您的 where-clause 不正确。与其与patient_goals.id 进行比较,不如将其与p_goal 进行比较:

               var goals = (from p_goal in db.patient_goals
                            where p_goal.id == id
                            select p_goal);
    

    否则,您只是在比较参数列表中的值。

    【讨论】:

    • 不幸的是,用您上面的建议修改我的查询并没有解决我的问题,发布请求仍然有效,但它不会改变我表中的任何行。
    猜你喜欢
    • 2013-06-23
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2012-09-04
    • 2016-05-20
    • 2016-07-12
    相关资源
    最近更新 更多