26 Kasım 2008, ÇARŞAMBA
Nasıl, MVC Denetleyicisi ASP.NET JSON jQuery ile karmaşık nesneleri bir dizi göndermek için?
Benim şu anki kod aşağıdaki gibi görünüyor. Nasıl denetleyicisine benim dizi geçebilir miyim ve ne tür ölçütler benim denetleyicisi eylem kabul etmelidir?
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");
};
Denetleyicisi eylem benim yöntem gibi görünüyor
public JsonResult SaveOrUpdate(IList<PageDesignWidget> widgets)
CEVAP
26 Kasım 2008, ÇARŞAMBA
Bir çözüm buldum. Steve Gentile bir çözüm kullanıyorumjQuery and ASP.NET MVC – sending JSON to an Action – Revisited.
ASP.NET MVC görünümü benim kod gibi görünüyor:
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);
}
});
};
ve benim denetleyicisi eylem özel bir öznitelik ile dekore edilmiştir
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))]
public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets
Özel öznitelik için kod here (link şu an kırık durumda) bulunabilir.
Link kırık olduğu için bu JsonFilterAttribute kodu
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
Bunu Paylaş:
Nasıl FormData nesneleri göndermek içi...
Nasıl terminalden Curl ile JSON veri g...
Nasıl Jackson nesneleri bir dizi deser...
Nasıl Unicode olanları yerine string N...
Nasıl bir JSON nesnesi göndermek için ...