微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 将字典传给控制器asp.net mvc

我想传递类型为< 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();
                }
            });
        });

    }

解决方法

像(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 });

然后,您可以使用Dictionary< int,int>将dict对象发布到控制器.作为属性类型.

ActionResult MyPostAction(Dictionary<string,int> myDictionary)

第二次编辑作者的代码

以下内容适用于我,当有一个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); });

原文地址:https://www.jb51.cc/csharp/97361.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐