MVC核心中jsonp格式的替代方案是什么?

时间:2017-07-05 14:12:21

标签: asp.net-mvc asp.net-core-mvc kendo-asp.net-mvc

我在使用jsonp时需要以asp.net MVC Core格式返回结果。 在asp.net MVC中我们可以使用MVC.jsonp dll它的工作正常但是MVC Core中的替代方法是什么,因为我找不到任何。

  public JsonpResult FunctionalitesTblList()
    {
        var settings = new JsonSerializerSettings();
        return Jsonp(Rows, settings);
    }

1 个答案:

答案 0 :(得分:1)

没有内置的能力来处理带有MVC的JSONP,所以你总是使用第三方添加。显然,该库与.NET Core不兼容。因此,您可以选择找到兼容的类似库或选择其他方法。

@CuongLe是正确的,CORS总体上是一种更好的方法,所以你一定要对此进行调查。但是,如果你坚持使用JSONP,手动实现起来非常简单,那么你真的不需要库。

简单地说,所有JSONP都是JSON传递给客户端指定的“回调”函数。换句话说,如果将callack指定为“mycallback”,则响应应如下所示:

mycallback({ "foo": "bar" });

结果,您的代码变为:

string json = null;
using (var ms = new MemoryStream())
{  
    var serializer = new DataContractJsonSerializer(typeof(Foo));  
    serializer.WriteObject(ms, foo);  
    json = Encoding.UTF8.GetString(ms.ToArray());  
}
var jsonp = String.Format("{0}({1});", callback, json);
Response.ContentType = "application/javascript";
return Content(jsonp);