2011-12-22 6 views
2

私のasp.net Webアプリケーション(姓と名)からGETフィールドを取得する必要があります。 JSONを使用してフロントエンド(asp.net web app)からMVC 3アプリにそのデータを送信する必要があります。 MVC 3 Appはデータベースと通信し、値を取得し、それらをjsonオブジェクトにシリアル化し、フロントエンド(ASP.NET Webアプリ)にPOSTする必要があります。誰もがこれを達成する方法をサンプルコードで説明することはできますか?ASP.NET WebアプリケーションとMVC 3間で通信するためのRESTfulアーキテクチャの作成JSONを使用したアプリケーション

答えて

4

WebClientクラスを使用できます。これにより、任意のWebアプリケーションにHTTPリクエストを送信できます。 JSONの部分に関しては、JSONシリアライザが必要です。組み込みのJavaScriptSerializerクラスまたはJson.NETなどのサードパーティを使用できます。 Barクラスはいくつかのプロパティが含まれてい

[HttpPost] 
public ActionResult Foo(Bar bar) 
{ 
    ... 
    return Json(new 
    { 
     status = "OK" 
    }); 
} 

(単純または複合型することができる):

それでは、あなたが呼び出したいあなたのASP.NET MVC 3アプリケーションで次のコントローラのアクションを持っていると仮定してみましょう:

using (var client = new WebClient()) 
{ 
    client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
    var serializer = new JavaScriptSerializer(); 
    var json = serializer.Serialize(new 
    { 
     firstName = "first", 
     lastName = "last" 
    }); 
    var resultJson = client.UploadString("http://example.com/foo", json); 
    var result = serializer.Deserialize<Result>(resultJson); 
} 
:あなたは、クライアント側からこのようにそれを呼び出すことができます今すぐ

public class Bar 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

あなたは、アプリケーションによって返されるJSON構造に一致するようにResultクラスを定義し

public class Result 
{ 
    public string Status { get; set; } 
} 
+0

は私に明確なアイデアを与えるためにありがとうございました。私はあなたが提供した手順を歩いてきましたが、MVCアプリケーションとクライアントの両方を実行しているときに、この行に404 Not Foundエラーがスローされます(client.Uploadstring( "http:// localhost:3198/Foo"、json)なぜそれが発生していたのか分かりませんか? – Krishh

+0

@Krishh、おそらく、あなたは '/ foo'に応答するようにasp.net mvcアプリケーションを設定していません。これはルーティング設定に完全に依存します。コントローラ名: '/ home/foo'。 –

+0

私はそれが間違いだったと思う。うわー!働いてくれてありがとう!プロセスを非常にはっきりと説明してくれてありがとう。 – Krishh

関連する問題