2017-07-05 14 views
0

asp.net MVC Coreを使用している間に結果をjsonp形式で返す必要があります。 asp.net MVCではMVC.jsonp dllを使用できますが、それはうまく動作しますが、MVCコアでは何も見つかりません。MVCコアのjsonp形式の代替手段は何ですか?

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

CORSします。https: //docs.microsoft.com/en-us/aspnet/core/security/cors –

答えて

0

JSONPをMVCで処理する機能が組み込まれていないため、常にサードパーティの追加機能を使用していました。明らかに、そのライブラリは.NET Coreと互換性がありません。したがって、互換性のある同様のライブラリを見つけるか、他の方法を選択することもできます。

@CuongLeはCORSが全体的に優れたアプローチであることは間違いないので、間違いなくそれを調査する必要があります。しかし、あなたがJSONPを主張するならば、手動で実装するのはとても簡単です。本当にライブラリは必要ありません。

単純に、すべてのJSONPは、クライアントによって指定された「コールバック」関数に渡されたJSONです。言い換えれば、callackが "mycallback" として指定された場合、応答はちょうどのようになります。その結果

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

、あなたのコードは、単純に次のようになりますJSONPを交換する

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); 
関連する問題