我在使用jsonp
时需要以asp.net MVC Core
格式返回结果。
在asp.net MVC中我们可以使用MVC.jsonp dll
它的工作正常但是MVC Core中的替代方法是什么,因为我找不到任何。
public JsonpResult FunctionalitesTblList()
{
var settings = new JsonSerializerSettings();
return Jsonp(Rows, settings);
}
答案 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);