SORU
18 ŞUBAT 2009, ÇARŞAMBA


ASP.NET Denetleyicisi için görünümden JSON nesnesi Parametre olarak geçirmek Nasıl MVC

Herhangi bir sorun olmadan Görünümü (aşağıda gösterildiği gibi) için gönderilen karmaşık bir JSON nesnesi var ama ben nasıl bu Hale bir veri geri olamaz .NET AJAX çağrısı yoluyla denetleyici geçti geriye doğru orantılıdır. Çeşitli bölümleri aşağıda.

   var ObjectA = {
        "Name": 1,
        "Starting": new Date(1221644506800),

        "Timeline": [
            {
                "StartTime": new Date(1221644506800),
                "GoesFor": 200

            }
            ,
            {
                "StartTime": new Date(1221644506800),
                "GoesFor": 100

            }

        ]
    };

Bu nesne Denetleyici bir Yöntem geçirilebilir nasıl emin değilim, zaman Çizelgeleri aynalar yukarıdaki JS nesne Özelliklerini kullanarak nesne bu yöntem aşağıda.

public JsonResult Save(Timelines person)

Kullandığım bir WordPress kullanmak

        var encoded = $.toJSON(SessionSchedule);

        $.ajax({
            url: "/Timeline/Save",
            type: "POST",
            dataType: 'json',
            data: encoded,
            contentType: "application/json; charset=utf-8",
            beforeSend: function() { $("#saveStatus").html("Saving").show(); },
            success: function(result) {
                alert(result.Result);
                $("#saveStatus").html(result.Result).show();
            }
        });

Benzer, ama oldukça bir form kullanarak verileri değilim aynı olan bu soruyu gördüm. http://stackoverflow.com/questions/267707/how-to-pass-complex-type-using-json-to-asp-net-mvc-controller

Ayrıca bir 'JsonFilter' el ile JSON serisini, ama eğer bunu yapmak için bir yol olup olmadığını merak ediyordum nativly olsa ASP.NET MVC kullanarak başvurular gördüm Ya ne bu şekilde geçen veri için en iyi yöntemler?

CEVAP
4 Mart 2009, ÇARŞAMBA


Düzenleme:

Bu yöntem artık 3, otomatik olarak ele alınacaktır - http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx MVC gelmesi ile yapılması gerekir

< / ^ hr .

Bu ObjectFilter kullanabilirsiniz:

    public class ObjectFilter : ActionFilterAttribute {

    public string Param { get; set; }
    public Type RootType { get; set; }

    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json")) {
            object o =
            new DataContractJsonSerializer(RootType).ReadObject(filterContext.HttpContext.Request.InputStream);
            filterContext.ActionParameters[Param] = o;
        }

    }
}

O zaman şu şekilde: denetleyici yöntemleri uygulayabilirsiniz

    [ObjectFilter(Param = "postdata", RootType = typeof(ObjectToSerializeTo))]
    public JsonResult ControllerMethod(ObjectToSerializeTo postdata) { ... }

Eğer yazının içeriği türü ise temelde, "application/json" bu eyleme bahar ve harita türü nesne için değerleri belirtin. bu kadar

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blunty

    Blunty

    13 Mart 2006
  • Mindy

    Mindy

    20 NİSAN 2006
  • superemposed

    superemposed

    25 Aralık 2007