【发布时间】:2018-03-18 12:12:07
【问题描述】:
我对此感到困惑,非常感谢您的帮助:
所以我有一个按钮,当您单击它时,它会调用函数 bulkUpdate。
我在该 js 函数中创建了一个 字典,格式为:1 个键和 2 个值。
当我验证 js 中的值时,字典中的所有值都不为空,如下面的打印屏幕所示: the dictionary in javascript
但是,当它通过 ajax 调用到达控制器时,一些值为空。我注意到这只发生在以字母而不是数字开头的键上。 the dictionary in the controller
有谁知道为什么会发生这种情况以及我该如何解决?
JS:
function bulkUpdate(e, id){
var dictionary = {};
var el = $("#grid"+id),
grid = el.data("kendoGrid"),
dataSource = grid.dataSource;
var data = grid._data;
for(i=0; i<data.length; i++){
var foodID = grid._data[i].ID;
var extraQuantityBoxe = $("#extraAmmount" + foodID).val();
var takeStorageBoxe = $("#takeFromStorage" + foodID).val();
dictionary[foodID] = new Array();
dictionary[foodID].push(extraQuantityBoxe);
dictionary[foodID].push(takeStorageBoxe);
}
$.ajax({
type: "POST",
url: 'BulkUpdate',
data: {values : dictionary},
success: function (data) {
$("#grid"+id').data('kendoGrid').dataSource.read();
},
error: function () {
var notification = $("#notification").getKendoNotification();
var notificationBaseHeight = 100, notificationLineHeight = 25;
notification.show({
message: '@Resources.warnGenericError'
}, "error");
}
});
}
控制器:
public ActionResult BulkUpdate(Dictionary<string, int[]> values)
{
try
{
foreach (KeyValuePair<string, int[]> pair in values)
{
string key = pair.Key;
int[] value = pair.Value;
Guid foodID= new Guid(key);
FOODS food = _db.FOODS.Find(foodID);
food.INGREDIENT_EXTRA_QUANTITY = value[0];
food.TAKE_FROM_STORAGE = value[1];
food.INGREDIENT_TOTAL_QUANTITY = food.INGREDIENT_QUANTITY + value[0] + value[1];
food.UPDATED_AT = DateTime.Now;
food.UPDATED_BY = System.Web.HttpContext.Current.Session["username"].ToString();
}
_db.SaveChanges();
return Json(true);
}
catch (Exception e)
{
return Json(false, e.Message);
}
}
【问题讨论】:
标签: javascript c# asp.net-mvc dictionary hashmap