0

バッチ削除でグリッドを作成しようとしていますが、バックエンド (asp.NET WebApi) で問題が発生しています。

次のデータ ソースを設定しました。

    var QueueMessages = {
    transport: {
        read: {
           // omitted
        },
        destroy: {
            url: "api/QueueMessages/deleteMessages",
            dataType: "json",
            type: "DELETE"
        }
    },
    schema: {
        // omitted
    },
    autoSync: false,
    batch: true
};

および API コントローラーの関連部分:

    // batch version
    [HttpDelete]
    public HttpResponseMessage deleteMessages(IEnumerable<MessageHeader> headers)
    {
        foreach( MessageHeader header in headers )
        {
            try
            {
                // delete each...
            }
            catch (Exception e)
            {
                // handle exceptions...
            }
        }
        return new HttpResponseMessage(HttpStatusCode.OK);
    }

リクエストは deleteMessages に到達しますが、headers空のように見えます

設定が間違っていると思いますが、何が悪いのかわかりません..

編集: 1. MessageHeader クラス (属性が気になる場合は、wcf サービスからインポートされます):

[DataContract]
public class MessageHeader
{
    public MessageHeader(string id, string profileName, MessageQueueType queueType, DateTime acceptedAt, DateTime processedAt)
    {
        this.Id = id;
        this.ProfileName = profileName;
        this.QueueType = queueType;
        this.AcceptedAt = acceptedAt;
        this.ProcessedAt = processedAt;
    }

    [DataMember(Name="Id")]
    public String Id { get; private set; }

    [DataMember(Name="ProfileName")]
    public String ProfileName { get; private set; }

    [DataMember(Name = "QueueType")]
    public MessageQueueType QueueType { get; private set; }

    [DataMember(Name="AcceptedAt")]
    public DateTime AcceptedAt { get; private set; }

    [DataMember(Name="ProcessedAt")]
    public DateTime ProcessedAt { get; private set; }
}

2. サーバーへのリクエストは次のようになります (chrome devtools から):

models[0][AcceptedAt]:Thu Sep 04 2014 17:48:44 GMT+0300 (Jerusalem Daylight Time)
models[0][Id]:3c42c940-6711-4107-b02f-0e6842e1f771\424231
models[0][ProcessedAt]:Mon Jan 01 1 00:00:00 GMT+0200 (Jerusalem Standard Time)
models[0][ProfileName]:V11_DEV
models[0][QueueType]:0
4

2 に答える 2

0

私にとって、これは HTTP DELETE リクエストの本文の問題のように思えます。(エンティティ本体は HTTP DELETE 要求に許可されていますか? を参照してください)

DELETE リクエストにエンティティ本体が含まれている場合、本体は無視されます [...]

PS: MessageHeader クラスでパラメーターなしでパブリック コンストラクターを試すことはできますか?

于 2014-11-07T13:13:25.527 に答える