SORU
17 NİSAN 2009, Cuma


Dönen JSONP ASP.net MVC

Etki alanları arasında bazı JSON dönmek için sabırsızlanıyorum, ve bunu yapmak için daha JSONP saf JSON olduğunu anlıyorum. Sadece JSONResult türü uzanan düşünüyordum ve sonra da Jsonp bir yöntem uyguladı ki Denetleyicisi extendig yani ASP.net MVC kullanıyorum. Bu en iyi yolu hakkında gitmek ya da orada daha iyi olabilir yerleşik bir ActionResult?

Edit: devam ettim ve yaptım. Sadece referans iyiliği için yeni bir yol ekledi:

public class JsonpResult : System.Web.Mvc.JsonResult
    {
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            if (!String.IsNullOrEmpty(ContentType))
            {
                response.ContentType = ContentType;
            }
            else
            {
                response.ContentType = "application/javascript";
            }
            if (ContentEncoding != null)
            {
                response.ContentEncoding = ContentEncoding;
            }
            if (Data != null)
            {
                // The JavaScriptSerializer type was marked as obsolete prior to .NET Framework 3.5 SP1
#pragma warning disable 0618
                HttpRequestBase request = context.HttpContext.Request;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                response.Write(request.Params["jsoncallback"]   "("   serializer.Serialize(Data)   ")");
#pragma warning restore 0618
            }
        }
    }

ve ayrıca benim denetleyicileri bir üst sınıf için birkaç yöntem:

protected internal JsonpResult Jsonp(object data)
        {
            return Jsonp(data, null /* contentType */);
        }

        protected internal JsonpResult Jsonp(object data, string contentType)
        {
            return Jsonp(data, contentType, null);
        }

        protected internal virtual JsonpResult Jsonp(object data, string contentType, Encoding contentEncoding)
        {
            return new JsonpResult
            {
                Data = data,
                ContentType = contentType,
                ContentEncoding = contentEncoding
            };
        }

Bir cazibe gibi çalışır.

CEVAP
14 Aralık 2010, Salı


Jsonp ile benim kontrol sınıflara yerine() yöntemleri, bana dokunma bir daha temiz bir duygu olarak uzatma yöntemi yol gittim. Bu JsonpResult hakkında güzel bir şey, tam olarak aynı şekilde bir JsonResult test edebilirsiniz.

Yaptım:

public static class JsonResultExtensions
{
    public static JsonpResult ToJsonp(this JsonResult json)
    {
        return new JsonpResult { ContentEncoding = json.ContentEncoding, ContentType = json.ContentType, Data = json.Data, JsonRequestBehavior = json.JsonRequestBehavior};
    }
}

Tüm farklı Jsonp oluşturma hakkında endişelenmenize gerek yok bu şekilde() aşırı, sadece bir Jsonp bir JsonResult dönüştürmek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hidetake takayama

    hidetake tak

    3 Mart 2009
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011
  • Video Copilot

    Video Copilo

    21 EYLÜL 2006