gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:49:13 25 4
gpt4 key购买 nike

我有一个 Controller 定义为:

        [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");        } 

但是,在 Controller 上,我得到空值。

<小时/>

如果我的 Controller 只接受 1 个参数并且我只发布一个对象,它就可以工作。

        [AcceptVerbs(HttpVerbs.Post)]        public JsonResult PostMoreData(DataContracts.Address address)        {            return Json("test");        }
        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()            };            jQuery.post("/AddressValidation/PostMoreData", JsonAddress, function(data, textStatus) {                if (textStatus == "success") {                    var result = eval(data);                    if (result.length > 0) {                        alert(result);                    }                }            }, "json");        } 

有什么想法可以发布多个对象吗?

最佳答案

请注意,无论您的 Controller 做什么,jQuery 在这里执行的“默认序列化”都不会起作用。 jQuery 不会“遍历”第一级以下的参数映射,因此问题中的示例可能会生成此帖子数据:

address=[object]&geoLocation=[object]

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

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

最简单的解决方法是使参数映射变得平坦,每个键都以“地址”为前缀。或“地理位置”。具体取决于。

关于asp.net-mvc - 使用 jQuery.post 将多个参数发布到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com