简体   繁体   English

将JavaScript对象作为Dictionary传递给C#WCF服务<string, object>

[英]Passing JavaScript object to C# WCF service as Dictionary<string, object>

I'm trying to pass JavaScript object to C# WCF service as Dictionary and I don't know how to do it... 我正在尝试将JavaScript对象作为字典传递给C#WCF服务,我不知道该怎么做...

I have a WCF service: 我有一个WCF服务:

[OperationContract]
[WebInvoke]
public List<psy_trance_fm_genre> select(SortedDictionary<string, object> parameters)
{
    ...
}

And I have some JavaScript / JQuery code: 我有一些JavaScript / JQuery代码:

$.ajax({
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ '@genre': '', '@start_row_index': 0, '@maximum_rows': 100 }),
    error: function (jqXHR, textStatus, errorThrown) {
        ...
    },
    success: function (data, textStatus, jqXHR) {
        ...
    },
    type: 'POST',
    url: 'svc/psy_trance_fm_genres.svc/select'
});

Please help me to make them work together! 请帮助我让他们一起工作! Thanks in advance! 提前致谢!

Maybe this will help you or put you in the right direction: 也许这会帮助你或让你朝着正确的方向前进:

An example of an Ajax call I'm using: 我正在使用的Ajax调用示例:

    var data2Send = {
        "CategoryID": CatID, "AccountID": AccID, "RegionID": RegID, "PersonID": PerID, "BudgetID": BudID,
        "AccountDetailTypeID": AdtID
    }
//data2Send could also contain i.e. an array of arrays, list of lists, etc


    $.ajax({
        type: "GET",
        url: '../../Service/myservice.svc/GetAccountDetails',
        dataType: "json",
        data: data2Send,
        contentType: "application/json; charset=utf-8",
        success: function (data) { var accountDetails = JSON.parse(data.d); },
        error: function (jqXHR, textStatus, errorThrown) { alert(errorThrown); }
    });

The WCF contract: WCF合同:

    [WebInvoke(Method = "GET")]
    [OperationContract]
    string GetAccountDetails(int AccountID = 0, int RegionID = 0, int PersonID = 0, int CategoryID = 0, int BudgetID = 0, string AccountDetailTypeID = "");

Note that the the contract returns a string. 请注意,合同返回一个字符串。 I do this using: 我这样做使用:

        var accountDetailList = db.AccountDetails
            .Select(ad => new
            {
                AccountDetailTypeID = ad.AccountDetailTypeID,
                Reference = ad.Reference,
                Description = ad.Description,
        AccountDetailID = ad.AccountDetailID,
            })
            .ToList();

return JsonConvert.SerializeObject(accountDetailList);

I hope this helps. 我希望这有帮助。

I decided to rewrite my service to use only strings and int as parameters. 我决定重写我的服务,只使用字符串和int作为参数。

As far as I understand, it's impossible to pass the dictionary in a simple straightforward way. 据我所知,以简单直接的方式传递字典是不可能的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM