角度形式到C#MVC实体控制器空值

时间:2016-09-28 15:32:34

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

尝试将数据从angularjs发送到C#mvc控制器。尽管收集的数据很好(我用console.log看到它们),但它们在C#控制器中收不到,所以null值存储在数据库中。 这是我的Angular代码:

 var formapp = angular.module("formapp", []);
       formapp.controller("formctrl", function ($scope, $http) {
                      $scope.submitFormAngular = function () {
                var animal = $scope.animal;
                var url = '/Home/AngularData';
                $http({
                    method: 'POST',
                    url: url,
                    data: animal,
                }).success(function (data) {
                    console.log($scope.animal);
                    console.log("worked");
                           })
                            .error(function (error) {
                                console.log("not worked");
                            });
            }
           });

这是我的C#DTO:

public class Animal
{
    [Key]
    public int animalID { get; set; }
    public string animalName { get; set; }
    public string animalHabitat { get; set; }
    public string animalClass { get; set; }

}

最后这是我的C#控制器:

public JsonResult AngularData(Animal animal)
{
    db.Animals.Add(animal);
    db.SaveChanges();
    return Json(new { foo = "bar", baz = "Blech" });
}

再次:即使值存储在UI中,它们也不会传递给C#代码。 我是Angular等的新人 欢迎任何帮助。

这是我的表单的html代码:

<div class="form-group">
        <label for="name" class="col-md-3 text-align-right"><strong>Name</strong></label>
        <input name="name"
               id="name"
               type="text"
               maxlength="80"
               ng-model="animal.name"
               required
               placeholder="write a name" />
             <!--  data-ng-change="getFormData(animal)">-->
    </div>

    <div class="form-group">
        <label for="habitat" class="col-md-3 text-align-right"><strong>Habitat</strong></label>
        <input name="habitat"
               id="habitat"
               type="text"
               ng-model="animal.habitat"
               required
               placeholder="write a habitat" />
              <!-- data-ng-change="getFormData(animal)">-->
    </div>

    <div class="form-group">
        <label for="class" class="col-md-3 text-align-right"><strong>Class</strong></label>
        <input name="class"
               id="class"
               type="text"
               ng-model="animal.class"
               required
                placeholder="write a class" />
              <!-- data-ng-change="getFormData(animal)">-->
    </div>

2 个答案:

答案 0 :(得分:2)

与GeorgeD合作并发现他的角形模型被定义为

ng-model='animal.name'

而不是

ng-model='animal.animalName'

更改此修复它。

答案 1 :(得分:0)

尝试将控制器功能更改为:

public Task<ActionResult> AngularData(Animal animal)
{
    db.Animals.Add(animal);
    db.SaveChanges();
    return Json(new { foo = "bar", baz = "Blech" });
}

然后在提交数据库之前检查“animal”中是否有任何内容。