如何使用JSON,jQuery将复杂对象数组发布到ASP.NET MVC Controller?

股份公司:

我当前的代码如下所示。如何将数组传递给控制器​​,并且控制器动作必须接受哪种参数?

function getplaceholders() {
    var placeholders = $('.ui-sortable');
    var result = new Array();
    placeholders.each(function() {
        var ph = $(this).attr('id');
        var sections = $(this).find('.sort');
        var section;

        sections.each(function(i, item) {
            var sid = $(item).attr('id');

            result.push({ 'SectionId': sid, 'Placeholder': ph, 'Position': i });
        });
    });
    alert(result.toString());
    $.post(
        '/portal/Designer.mvc/SaveOrUpdate',
        result,
        function(data) {
            alert(data.Result);
        }, "json");
};

我的控制器动作方法看起来像

public JsonResult SaveOrUpdate(IList<PageDesignWidget> widgets)
股份公司:

我找到了解决方案。我使用了Steve Gentile,jQuery和ASP.NET MVC的解决方案-将JSON发送到Action-Revisited

我的ASP.NET MVC视图代码如下所示:

function getplaceholders() {
        var placeholders = $('.ui-sortable');
        var results = new Array();
        placeholders.each(function() {
            var ph = $(this).attr('id');
            var sections = $(this).find('.sort');
            var section;

            sections.each(function(i, item) {
                var sid = $(item).attr('id');
                var o = { 'SectionId': sid, 'Placeholder': ph, 'Position': i };
                results.push(o);
            });
        });
        var postData = { widgets: results };
        var widgets = results;
        $.ajax({
            url: '/portal/Designer.mvc/SaveOrUpdate',
            type: 'POST',
            dataType: 'json',
            data: $.toJSON(widgets),
            contentType: 'application/json; charset=utf-8',
            success: function(result) {
                alert(result.Result);
            }
        });
    };

并且我的控制器动作装饰有一个自定义属性

[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets

可在此处找到自定义属性的代码(该链接现在已断开)。

由于链接断开,因此这是JsonFilterAttribute的代码

public class JsonFilter : ActionFilterAttribute
{
    public string Param { get; set; }
    public Type JsonDataType { get; set; }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.ContentType.Contains("application/json"))
        {
            string inputContent;
            using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream))
            {
                inputContent = sr.ReadToEnd();
            }
            var result = JsonConvert.DeserializeObject(inputContent, JsonDataType);
            filterContext.ActionParameters[Param] = result;
        }
    }
}

JsonConvert.DeserializeObject来自Json.NET

链接:使用Json.NET对JSON进行序列化和反序列化

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET MVC中的ApiController和Controller之间的区别

如何不使用表单将字符串数组发布到ASP.NET MVC Controller?

如何使用OWIN将Ninject Controller Factory添加到ASP.NET MVC应用程序?

使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么?

使用ajax在Controller中调用操作-不起作用。(ASP.Net MVC)

如何使用AJAX将数据发布到ASP.NET MVC控制器?

将模型对象列表列表发布到ASP.NET MVC中的Controller

所有Controller类的全局方法ASP.NET MVC

如何在ASP.NET Core MVC Controller中显示警报消息框?

从View发送字符串到Controller ASP.Net MVC

ASP.NET MVC中使用SignalR Hub和Controller类的正确方法

ASP.Net MVC中的简单Dropzone实现-如何在Controller中获取数据?

ASP.NET MVC:将对象列表从Controller传递到View

获取div源代码以将HTTP发布到Controller ASP.NET MVC

在ASP.NET Core MVC Controller中使用DeleteConfirmed类捕获SqlException 547问题

我的对象未使用jQuery的ASP.NET MVC发布

ASP.NET MVC如何将JSON对象从View传递到Controller作为参数

带有Newtonsoft的ASP.NET MVC,将对象从Controller传递到View

ASP.NET MVC:如何重写父Controller方法

ASP.NET MVC:将复杂的数据从View传递到Controller

ASP.NET MVC在Controller中异步实现的最佳方法

如何将DateTime参数从View传递到ASP.net MVC5中的Controller?

使用$ .ajax将XML发布到MVC Controller方法

在不使用jquery或javascript的情况下将下拉列表值从View传递到Asp.Net MVC4中的Controller?

JSON.stringify时,Json到ASP.NET MVC Controller的参数为null

jQuery调用ASP.NET MVC中的Controller时显示加载微调框

将HTML表单数据从View传递到ASP.NET MVC中的Controller

将 json 发布到 mvc .net 核心

Angular 服务未命中 Asp.Net MVC Post Controller