Как отправить массив сложных объектов с JSON, jQuery на ASP.NET Контроллер MVC?

92
задан Peter Mortensen 12 August 2011 в 12:38
поделиться

2 ответа

Я нашел решение. Я использую решение Steve Gentile, jQuery и ASP.NET MVC †“, отправляющий JSON в Действие †“Пересмотренный .

код представления My 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 с Json.NET

84
ответ дан James Newton-King 24 November 2019 в 06:33
поделиться

К второй половине из Создают API REST с помощью ASP.NET MVC, который говорит и JSON и простой XML, для заключения в кавычки:

Теперь мы должны принять JSON и полезную нагрузку XML, поставленную через POST HTTP. Иногда Ваш клиент мог бы хотеть загрузить набор объектов в одном выстреле для пакетной обработки. Так, они могут загрузить объекты с помощью или JSON или формата XML. Нет никакой собственной поддержки в ASP.NET MVC, чтобы автоматически проанализировать отправленный JSON или XML и автоматически отобразиться на параметры Действия. Так, я записал фильтр, который делает это. "

Он тогда реализует фильтр действия, который отображает JSON на объекты C# с показанным кодом.

8
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: