9

コードビハインドからASP.NETWebAPIを直接呼び出すにはどうすればよいですか?または、コードビハインドからgetJSONメソッドを呼び出すjavascript関数を呼び出す必要がありますか?

私は通常次のようなものを持っています:

    function createFile() {
        $.getJSON("api/file/createfile",
        function (data) { 
            $("#Result").append('Success!');
        });
    }

どんなポインタでもありがたいです。TIA。

*私はWebFormsを使用しています。

4

3 に答える 3

13

Webサービス自体を呼び出す必要がある場合は、HttpClient HenrikNeilsenの説明に従って使用してみてください。

更新されたHTTPClientサンプル

基本的な例:

// Create an HttpClient instance 
HttpClient client = new HttpClient(); 

// Send a request asynchronously continue when complete 
client.GetAsync(_address).ContinueWith( 
    (requestTask) => 
    { 
        // Get HTTP response from completed task. 
        HttpResponseMessage response = requestTask.Result; 

       // Check that response was successful or throw exception 
        response.EnsureSuccessStatusCode(); 

        // Read response asynchronously as JsonValue
        response.Content.ReadAsAsync<JsonArray>().ContinueWith( 
                    (readTask) => 
                    { 
                        var result = readTask.Result
                        //Do something with the result                   
                    }); 
    }); 
于 2012-04-25T00:10:24.113 に答える
6

ロジックを別のバックエンドクラスにリファクタリングし、コードビハインドおよびWebAPIアクションから直接呼び出す必要があります。

于 2012-04-24T23:16:38.077 に答える
3

多くのソフトウェアアーキテクチャの本で推奨されているのは、(API)コントローラコードにビジネスロジックを入れないことです。正しい方法で実装すると仮定します。たとえば、コントローラーコードが現在サービスクラスまたはファサードを介してビジネスロジックにアクセスしている場合、正面玄関を経由するのではなく、同じサービスクラス/ファサードをその目的で再利用することをお勧めします。 '(コードビハインドからJSON呼び出しを行うことにより)

基本的で素朴な例の場合:

public class MyController1: ApiController {

    public string CreateFile() {
        var appService = new AppService();
        var result = appService.CreateFile(); 
        return result;
    }

}

public class MyController2: ApiController {

   public string CreateFile() {
       var appService = new AppService();
       var result = appService.CreateFile(); 
       return result;
   }
}

AppServiceクラスは、ビジネスロジックをカプセル化し(そして別のレイヤーに存在します)、ロジックへのアクセスを容易にします。

 public class AppService: IAppService {

     public string  MyBusinessLogic1Method() {
       ....
       return result;
     }
     public string  CreateFile() {

          using (var writer = new StreamWriter..blah die blah {
            .....
            return 'whatever result';
          }

     }

    ...
 }
于 2012-04-24T23:16:31.530 に答える