加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:02:52 所属栏目:百科 来源:网络整理
导读:我想传递类型为 int,int的字典通过Ajax发布到我的控制器. 这里的主要原因是这里的帖子可能有1-3个关键值对(在编译时没有这些值被知道),以后它可能会达到5. 同样在帖子中,我必须传递一些其他数据,如Id和name,它们都正常工作. 我将如何在javascript中构建这个
我想传递类型为< 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); });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读