словарь передачи к контроллеру asp.net mvc

Я желаю передать словарь типа <int,int> к моему контроллеру с помощью сообщения Ajax. Главной причиной здесь является сообщение, может иметь между 1-3 парами значения ключа здесь (ни одно из этих значений не известно во время компиляции), и в будущем это может подойти 5.

Также в сообщении я должен передать в некоторых других данных, таких как идентификатор и имя, который все работы как нормальные.

Как я создал бы этот словарь в 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();
                }
            });
        });

    }
18
задан ddd 5 January 2010 в 11:56
поделиться

2 ответа

[

]Клиент (JavaScript):[

] [
var dict = new Object();
dict.Key1 = "Value1"
dict.Key2 = "Value2"

$.post('/YourController/YourAction/', dict);
] [

]ПРИМЕЧАНИЕ: Объекты "dict" сериализуются за кулисами перед отправкой в ваше действие.[

] [

]Сервер:[

] [
public ActionResult YourAction()
{
    string postData = string.Empty;
    using (StreamReader sr = new StreamReader(Request.InputStream))
    {
        postData = sr.ReadToEnd();
    }    

    //Load post data into JObject (Newtonsoft.Json)
    JObject o = JObject.Parse(postData);

    //Extract each key/val 
    string val1 = (string)o["Key1"];

    //Do whatever....
}
]
1
ответ дан 30 November 2019 в 07:23
поделиться
[

] Что-то вроде (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 });
] [

] Затем объект [] dict[] можно поместить на контроллер, используя [] словарь[] в качестве типа свойства.[

]. [
ActionResult MyPostAction(Dictionary<string, int> myDictionary)
] [
] [

] редактирование из авторского кода во второй раз:[

] [

] При наличии [] словаря<стринг, int> kvPairs[] для меня работает следующее. [][] все-таки не будет работать.[

]. [

] Сделай свой пост как: [

] [
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); }); 
]
21
ответ дан 30 November 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: