Я нашел решение. Я использую решение 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
К второй половине из Создают API REST с помощью ASP.NET MVC, который говорит и JSON и простой XML, для заключения в кавычки:
Теперь мы должны принять JSON и полезную нагрузку XML, поставленную через POST HTTP. Иногда Ваш клиент мог бы хотеть загрузить набор объектов в одном выстреле для пакетной обработки. Так, они могут загрузить объекты с помощью или JSON или формата XML. Нет никакой собственной поддержки в ASP.NET MVC, чтобы автоматически проанализировать отправленный JSON или XML и автоматически отобразиться на параметры Действия. Так, я записал фильтр, который делает это. "
Он тогда реализует фильтр действия, который отображает JSON на объекты C# с показанным кодом.