asp.net mvc использует angularjs post json type для вставки базы данных контроллера

0

У меня есть код проблемы. как это

Посмотреть

 <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";
            }
        }

В результате всегда появляется сообщение show alert add fail. Кажется, что json не может отправлять сообщения в контроллер MVC. Пожалуйста, помогите поблагодарить вас.

ColorDB

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

update: Я изменил код контроллера AddColor. Я также tyr, чтобы добавить ColorDB color = new ColorDB(); and color.Color = "testColor"; ColorDB color = new ColorDB(); and color.Color = "testColor"; Значение может вставляться в db, но ColorDB col также равно null. Проблема в том, что контроллер Mvc не может получать данные 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";
                }
            }
  • 0
    Вы даже пытались отладить свой код? Ваш цветовой аргумент, вероятно, нулевой, поскольку вы отправляете строку и ожидаете сложный объект.
Теги:
asp.net-mvc
asp.net-mvc-4

1 ответ

0

public string AddColor(ColorDB color) вы ожидаете объект ColorDB. Если он представляет вашу DB то это неправильно. Он не мог связываться. Проверьте тип параметров.

UPDATE: Я думаю, проблема связана. Контроллер не может привязать ваш json к объекту ColourDB.

Можешь попробовать:

Добавьте этот параметр ajax contentType: "application/json; charset=utf-8". Может быть, dataType: "json" недостаточно. И если это не работает, попробуйте использовать angular.TOJSON(newColor) вместо использования JSON.stringify(newColor). Или объедините эти два.

  • 0
    привет кюр мой ColorDB, как это. Как и в предыдущем
  • 0
    Я пытался, но не могу Спасибо за ваш совет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню