ddd*_*ddd 18 javascript c# ajax asp.net-mvc dictionary
我想<int,int>
通过Ajax帖子将类型字典传递给我的控制器.这里的主要原因是这里的帖子可能有1-3个键值对(这些值在编译时都不知道),并且将来可能会达到5.
同样在帖子中我必须传递一些其他数据,例如Id和name,这些数据都正常.
我将如何在javascript中构建这个词典,然后通过JQuery帖子发送它,最后在控制器上接收它来处理?
编辑2:我决定用每个值的帖子解决这个问题,而不是试图传递字典.
编辑:这是我的功能来源,所以你可以看到我在尝试:
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();
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*oom 21
像(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 });
Run Code Online (Sandbox Code Playgroud)
然后,您可以dict
使用Dictionary<int, int>
as属性类型将对象发布到控制器.
ActionResult MyPostAction(Dictionary<string, int> myDictionary)
Run Code Online (Sandbox Code Playgroud)
第二次从作者的代码编辑:
有以下情况适用于我Dictionary<string, int> kvPairs
.<int, int>
毕竟不会起作用.
让你的帖子像:
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); });
Run Code Online (Sandbox Code Playgroud)
小智 15
必须将JavaScript对象/字典作为键值对列表传递给ASP.NET MVC控制器Dictionary<TKey, TValue>
.例:
如果您有这样的字典:
public Dictionary<string, decimal?> SomeMapping { get; set; }
Run Code Online (Sandbox Code Playgroud)
那么你必须在你的JavaScript中使用这样的东西:
var sourceMapping = { a: 1, b: 1.5, c: null };
var SomeMapping = [];
for (var key in sourceMapping) {
if (sourceMapping.hasOwnProperty(key)) {
SomeMapping.push({ Key: key, Value: sourceMapping[key] });
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在内容类型设置为的异步POST请求(使用jQuery发送)中使用了这种方法('application/json'
在您的情况下这可能重要也可能不重要).
归档时间: |
|
查看次数: |
27650 次 |
最近记录: |