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

asp.net-mvc – 使用jQuery.post将多个参数发布到MVC Controller

发布时间:2020-12-15 21:06:10 所属栏目:asp.Net 来源:网络整理
导读:我有一个控制器定义为: [AcceptVerbs(HttpVerbs.Post)] public JsonResult PostMoreData(DataContracts.Address address,DataContracts.GeoLocation geoLocation) { return Json("test"); }where DataContracts.Address and DataContracts.GeoLocation are
我有一个控制器定义为:
        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult PostMoreData(DataContracts.Address address,DataContracts.GeoLocation geoLocation)
        {
            return Json("test");
        }

where DataContracts.Address and DataContracts.GeoLocation are complex types.

从我的视图我试图使用jQuery发布如下:

        function PostMoreData() {

            var JsonAddress = {

                "Building": $('Building').val(),"UnitNumber": $('UnitNumber').val(),"StreetNumber": $('StreetNumber').val(),"StreetName": $('StreetName').val(),"StreetType": $('StreetType').val(),"Suburb": $('Suburb').val(),"State": $('State').val(),"Postcode": $('Postcode').val(),"MonthsAtAddress": $('MonthsAtAddress').val()

            };

            var JsonGeoLocation = {
                "Latitude": $('Latitude').val(),"Longitude": $('Longitude').val()
            };


            jQuery.post("/AddressValidation/PostMoreData",{address: JsonAddress,geoLocation: JsonGeoLocation},function(data,textStatus) {
                if (textStatus == "success") {
                    var result = eval(data);
                    if (result.length > 0) {
                        alert(result);
                    }
                }
            },"json");
        } 

但是,在控制器上,我得到空值.

它可以工作,如果我的控制器只需要一个参数,我只发布一个对象.

        [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult PostMoreData(DataContracts.Address address)
        {
            return Json("test");
        }
        function PostMoreData() {

            var JsonAddress = {

                "Building": $('Building').val(),"MonthsAtAddress": $('MonthsAtAddress').val()

            };


            jQuery.post("/AddressValidation/PostMoreData",JsonAddress,"json");
        } 

任何想法如何我可以发布多个对象?

解决方法

请注意,无论您的控制器做什么,jQuery在这里执行的“默认序列化”都不会起作用. jQuery不会“遍历”第一级下面的参数映射,因此问题中的示例可能会生成此发布数据:
address=[object]&geoLocation=[object]

另一个工作示例不包含任何子对象,因此它是直接翻译的,如下所示:

Building=value&UnitNumber=value&...&MonthsAtAddress=value

最简单的解决方法是使参数映射平坦,每个键都以“地址”为前缀.或’GeoLocation.’,取决于.

(编辑:李大同)

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

    推荐文章
      热点阅读