asp.net mvc使用angularjs post json类型到控制器插入数据库

时间:2016-07-22 10:39:53

标签: angularjs json asp.net-mvc asp.net-mvc-4

我有一个问题代码。 像这样

查看

 <div ng-app="MyPct4" ng-controller="ajaxCtrl">
    <div>
        <table>
            <tr>
                <td><b>pls input Color</b></td>
                <td><input type="text" ng-model="InputColor" /></td>
            </tr>
        </table>
        <input type="button" value="save" ng-click="AddUpdateColor()" />
    </div>
</div>

Angularjs控制器

var ptc4 = angular.module("MyPct4", []);
ptc4.controller('ajaxCtrl', function ($scope, myService) {
    $scope.AddUpdateColor = function () {
                var newColor = { Color: $scope.InputColor };
                var getData = myService.AddColor(newColor);
                getData.then(function (msg) {
                    alert(msg.data);
                }, function () {
                    alert("error")
                });
            }
}

Angularjs服务

ptc4.service("myService", function ($http) {
this.AddColor = function (newColor) {
                var response = $http({
                    method: "post",
                    url: "/Practice/AddColor",
                    data: JSON.stringify(newColor),
                    dataType: "json"
                });
                return response;
            }
}

MVC控制器

 private TestDBEntities2 db = new TestDBEntities2();
    public string AddColor(ColorDB color)
        {
            if (color != null)
            {
                    db.ColorDB.Add(color);
                    db.SaveChanges();
                    return "add success";
            }
            else
            {
                return "add fail";
            }
        }

结果始终显示警告添加失败。 似乎是json无法发布到MVC控制器。 非常感谢你。

ColorDB

 public partial class ColorDB
{
    public int Id { get; set; }
    public string Color { get; set; }
}

更新: 我更改了AddColor控制器代码。我还要添加ColorDB color = new ColorDB(); and color.Color = "testColor";该值可以插入到db但ColorDB col也为null。问题似乎是Mvc Controller无法接收ajax数据。

public string AddColor(ColorDB col)
        {
            ColorDB color = new ColorDB();
            color.Color = "testColor";
            if (color != null)
                {
                    db.ColorDB.Add(color);
                    db.SaveChanges();
                    return "add success";
                }
                else
                {
                    return "add fail";
                }
            }

1 个答案:

答案 0 :(得分:0)

public string AddColor(ColorDB color)您期待ColorDB对象。如果它代表您的DB则表示错误。它无法绑定。检查参数类型。

更新:我认为问题是绑定。控制器无法将您的json绑定到ColourDB对象。

您可以尝试:

添加您的ajax选项contentType: "application/json; charset=utf-8"。也许dataType: "json"还不够。如果它不起作用,请尝试使用angular.TOJSON(newColor)而不是JSON.stringify(newColor)。或者结合这两个。