Web api Delete方法输入对象参数为null

时间:2014-10-24 22:59:23

标签: asp.net-mvc angularjs asp.net-web-api

在我的WebAPI asp.net mvc控制器删除方法中,名为contact的传入对象即将出现。我已经检查了我的代码,我无法找出根本原因。我的编辑操作以非常类似的方式成功运行。

那么是什么导致webapi asp.net方法中的联系对象参数以空值形式出现?

我已经如图所示检查了角度控制器内的接触对象在传递给webapi删除方法之前不是null。

enter image description here

Here is my rest of the code 

  <div data-ng-controller="ContactDeleteController">
        <form name ="deleteContact" data-ng-submit="saveDeleteContact()">
            <div>
                <label>First Name: </label>
                <input required type="text" placeholder="Enter First Name" data-ng-model="contact.FirstName"/>
            </div>
            <div>
                <label>Last Name: </label>
                <input required type="text" placeholder="Enter Last Name" data-ng-model="contact.LastName"/>
            </div>
            <div>
                <label>Email Address: </label>
                <input required type="text" placeholder="Enter Email Address" data-ng-model="contact.EmailAddress"/>
            </div>
            <div>
                <label>Cell Phone Number: </label>
                <input required type="text" placeholder="Enter Phone Number" data-ng-model="contact.PhoneNumber"/>
            </div>
            <div></div>
            <div>
                <button class="btn btn-primary" type="submit">Delete</button>
            </div>
        </form>
    </div>



    var ContactDeleteController = function ($scope, $http, $location) {
        var contactId = $location.absUrl().match(/\/Delete\/(.*)/)[1];
        $http.get("/api/ContactWeb/" + contactId)
            .then(function (response) {
                $scope.contact = response.data;
            });

        $scope.saveDeleteContact = function () {
            var con = $scope.contact;
            $http.delete("/api/ContactWeb", con)
                .then(function (response) {
                    $scope.contact = response.data;
                });
            window.location = "/Contact/Index";
        };
    };

enter image description here

2 个答案:

答案 0 :(得分:8)

HTTP不允许DELETE与body。尝试在URI(查询字符串等)中发送参数,并在Web API中使用Contact将数据绑定到复杂类型[FromUri]

答案 1 :(得分:3)

只需在您的请求中将实体的ID发送到服务器,您就不需要在正文中包含任何数据。 现在在服务器上,您可以删除具有该ID的实体。