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!
请帮助我让他们一起工作!提前致谢!
2 个解决方案
#1
1
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.
我希望这有帮助。
#2
0
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.
据我所知,以简单直接的方式传递字典是不可能的。
#1
1
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.
我希望这有帮助。
#2
0
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.
据我所知,以简单直接的方式传递字典是不可能的。