jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – MVC3 Json模型绑定在发送到服务器时不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对MVC3和模型绑定有一个奇怪的问题.
当我将 JSON对象发布到我的控制器时,模型绑定器根本无法创建一个类型化的对象.所有属性都是属性(即空字符串)

但是,如果我在服务器上创建实例,并将其作为JSON操作结果发送,则线上的数据看起来相同.

我试过了

$.ajaxSetTings.Traditional = true;

它没有任何区别

作为一个例子,如果我发布

{"RoutInename":"My new routIne","RoutInes":[{"DayName":"Monday","Items":[21,31]}]}

模型绑定器失败,但来自服务器的数据看起来像

{"RoutInename":"RoutIne From Code","Items":[1,2]},{"DayName":"Tuesday","Items":[]}]}

用于生成内容的html看起来像

$('#submitRoutIne').click(function () {
            var routInes = [];
            $('.DayName').each(function (index,item) {
                var $item = $(item);
                var name = $item.html();
                var routIneItems = [];
                $($item.attr('href')).find('.itemId').each(function () {
                    routIneItems.push(parseInt($(this).val(),10));
                });
                routInes.push({
                    DayName: name,Items: routIneItems
                });
            });
            var routIne = {
                RoutInename: $('#routInename').val(),RoutInes: routInes
            };

            $.ajaxSetTings.Traditional = true;
            $.post('/Machine/CreateRoutIne',JSON.Stringify(routInE),function (data) {},'json');
        });

所以看起来从类型化对象到JSON的模型绑定是可以的,但是以另一种方式返回则不行.有没有我错过的东西?

模型在F#中

type RoutIneDayviewmodel() =
    let mutable _name = String.Empty
    let mutable _items = new ResizeArray<int>()

    member x.DayName with get() = _name and set value = _name <- value
    member x.Items with get() = _items and set value = _items <- value

type RoutIneviewmodel() =
    let mutable _name = String.Empty
    let mutable _routInes = new ResizeArray<RoutIneDayviewmodel>()

    member x.RoutInename with get() = _name and set value = _name <- value
    member x.RoutInes with get() = _routInes and set value = _routInes <- value

编辑:
我也尝试过以下C#类并获得相同的结果

public class RoutIneDayviewmodel
    {
        public String DayName { get; set; }
        public List<int> Items{ get; set; }
    }

    public class RoutIneviewmodel
    {
        public String RoutInename { get; set; }
        public List<RoutIneDayviewmodel> RoutInes { get; set; }
    }

我还在global.asax中添加了以下内容

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())

谢谢

解决方法

如果您打算发送JSON格式的请求,则需要将请求内容类型设置为application / json,这是您使用JSON.Stringify方法执行的操作.所以代替:

$.post('/Machine/CreateRoutIne','json');

你可以使用:

$.ajax({
    url: '/Machine/CreateRoutIne',type: 'POST',contentType: 'application/json; charset=utf-8',data: JSON.Stringify(routInE),success: function (data) {

    } 
});

有了这个,您不需要设置$.ajaxSetTings.Traditional,也不应该在Global.asax中添加任何JsonValueProviderFactory,因为ASP.NET MVC 3中添加了此提供程序.

大佬总结

以上是大佬教程为你收集整理的jquery – MVC3 Json模型绑定在发送到服务器时不起作用全部内容,希望文章能够帮你解决jquery – MVC3 Json模型绑定在发送到服务器时不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。