0

List をパラメーターとして受け取る Web メソッドがあります。jQuery ajax 呼び出しは GUID を正常に渡します。ただし、Web サービスのリストには正しい数の項目がありますが、すべての項目が空の GUID です。

これが私の方法です。

[WebMethod]
public bool CheckProductsAreAvailable(string userId, List<Guid> lId)
{
    // do something
}

そして、サービス メソッドを次のように呼び出します。

$('#<%= btnCheck.ClientID %>').click(function () {
var hdnIds = document.getElementById('<%= hdnIds.ClientID %>');
var ids = hdnIds.value; // this contains comma separated guids  


var lId = new Array();
$.each(ids.split(','), function(){
    if(this == '')
        return;

    lId.push({"Guid": this});
});

var data = {"userId": '<%= UserId %>', "lId": lId};

$.ajax({
    type: 'POST',
    url: GetProductsServiceUrl() + '/CheckProductsAreAvailable',
    data: JSON.stringify(data),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (response) {
        if (response.d)
            $('#pAvailability').html('All items are still available.');
        else
            $('#pAvailability').html('Not All items are currently available.');
    },
    error: function (xhr) { alert(xhr.responseText); }
});

return false;
});

フィドラーをチェックしました。渡された値は期待どおりです。ここに 1 つのサンプルがあります。

{"userId":"XXX-XXXX-0000","lId":[{"Guid":"cf93114f-d1c9-e011-bdc3-0050568e16a0"},{"Guid":"d093114f-d1c9-e011-bdc3- 0050568e16a0"}"},{"ガイド":"751d7859-d1c9-e011-bdc3-0050568e16a0"},{"ガイド":"761d7859-d1c9-e011-bdc3-0050568e16a0"},{"ガイド":"771d7859- d1c9-e011-bdc3-0050568e16a0"},{"ガイド":"781d7859-d1c9-e011-bdc3-0050568e16a0"}]}

Web メソッドをデバッグすると、userId (この場合は XXX-XXXX-0000) に正しい値が表示されます。lId は、渡された ID と同じ数 (この場合は 6) があることを示していますが、それらはすべて空の GUID (00000000-0000-0000-0000-000000000000) です。

なぜこれが起こっているのか誰にもわかりますか?ありがとう。

4

2 に答える 2