更新时间:2023-02-25 16:32:06
喜欢的东西(JavaScript的)
字典=新的对象();
字典['12'] = 5;
字典['13'] = 6;
快译通['1000'] = 21;
快译通['9'] = 13;
字典['13'] = 48;
.post的$('/ client.mvc / mypostaction /',{myDictionary:字典});
INT,INT> 的属性类型
您就可以使用词典&LT发布
字典
对象到控制器
的ActionResult MyPostAction(词典<字符串,INT> myDictionary)
这是笔者的code第二次编辑:
我下面的工作,有当词典<字符串,INT> kvPairs
。 < INT,INT>
不会毕竟上班
请您的文章,如:
VAR字典=新的对象();
字典['13'] = 9;
字典['14'] = 10;
字典['2'] = 5;
.post的$('controller.mvc /测试',{'kvPairs:快译通},功能(OBJ){$('#输出)HTML(obj.Count);});
I am wanting to pass a dictionary of type <int,int>
to my controller via an Ajax post.
The main reason here is the post may have between 1-3 key value pairs here (none of these values are known at compile time) and in the future it may go up to 5.
Also in the post I have to pass in some other data, such as Id and name, which all works as normal.
How would I construct this dictionay in the javascript then send it via the JQuery post and finally receive it on the controller to process?
Edit 2: I have decided to just solve this with a post for each value instead of trying to pass a dictionary.
EDIT: Here is my source for the function so you can see what I am trying:
function BindAddMenuItem() {
$(".AddMenuItem").click(function (e) {
e.preventDefault();
//get header id from link by removing addmenuitem from this.id
var currentId = $(this).attr("id").replace("AddMenuItem", "");
//get itemnumber, itemname, itemdetails from textboxes with same header id
var restaurantId = jQuery.trim($("#RestaurantId").val());
var itemNumber = jQuery.trim($("#ItemNumber" + currentId).val());
var itemName = jQuery.trim($("#ItemName" + currentId).val());
var itemDetails = jQuery.trim($("#ItemDetails" + currentId).val());
var costs = new Object();
//select all textboxes with class "Header" + currentId
$(".Header" + currentId).each(function (i) {
var optionId = $(this).attr("id").replace("Option", "");
costs[optionId] = $(this).val();
});
$.ajax(
{
type: "POST",
url: "/Menu/AddMenuItem",
data: "reastaurantId=" + restaurantId + "&menuHeaderId=" + currentId + "&itemNumber=" + itemNumber + "&itemName=" + itemName + "&itemDetails=" + itemDetails + "&costs=" + costs,
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#MenuContainer").replaceWith(domElement);
var newNum = parseInt(itemNumber) + 1;
$("#ItemNumber" + currentId).val(newNum);
BindAllBehaviours();
}
});
});
}
Something like (javascript)
dict = new Object();
dict['12'] = 5;
dict['13'] = 6;
dict['1000'] = 21;
dict['9'] = 13;
dict['13'] = 48;
$.post('/client.mvc/mypostaction/', { myDictionary: dict });
You can then post the dict
object to your controller using a Dictionary<int, int>
as property type.
ActionResult MyPostAction(Dictionary<string, int> myDictionary)
edit from author's code second time:
The following works for me, when having a Dictionary<string, int> kvPairs
. <int, int>
isn't going to work after all.
Make your post like:
var dict = new Object();
dict['13'] = 9;
dict['14'] = 10;
dict['2'] = 5;
$.post('controller.mvc/Test', { 'kvPairs': dict }, function(obj) { $('#output').html(obj.Count); });