3

jquery/ajax を使用して、同じソリューション内の別のプロジェクトで ac# (または他の .net) 関数を呼び出すことができるかどうかは誰にもわかりませんか?

ソリューションの名前が ExampleSolution で、ターゲット関数を呼び出すプロジェクトの名前が Project.Source で、ターゲット プロジェクトの名前が Project.Target で、ターゲット関数の名前がTargetFunction().

で次のことを試し.js fileましたProject.Source

    $.ajax({
            url: '/ExampleSolution/Project.Target/TargetFunction',            
            type: 'get',
            success: function (data) {
                $(document.body).append(data);
            }
   });

次に、いくつかの方法で URL 行を変更しましたが、成功しませんでした。

何かアドバイスはありますか?

4

3 に答える 3

1

迅速な回答ありがとうございました。

私は問題の解決策を見つけました。将来誰かが同じ問題に直面した場合に備えて、それを共有したいと思います。

$ .ajax関数を呼び出す前の.jsファイルで、実行中のtarget-projectのtargetfunctionへのURLを指すwindow.locationを使用して変数を作成し、ajax-functionで変数を使用します。したがって、別のプロジェクトを指すことはありません。実行中のプロジェクトのURLをポイントします。

それが聞こえるのと同じくらい簡単です。

以下に解決策を示します。

    var url = window.location = 'http://localhost:13105/TargetFunction';

    $.ajax({
        url: url,
        type: 'get',
        success: function (data) {
            $(document.body).append(data);
        }
    });
});
于 2013-01-22T16:54:48.470 に答える
0

簡単な答えは「いいえ、それは不可能です」です。フロントエンドコード(jQueryやAJAXなど)はクライアントのマシンで実行されますが、C#関数はバックエンドであり、サーバーで実行されます。それらの間に直接の関係はありません。


長い答えは「直接ではありませんが、似たようなことをする方法があります」です。最も簡単なオプションは、AJAXを使用してサーバー上の別のコントローラー/アクションにPOSTしてから、応答を処理することです。これはあなたがやっていたことに近いですが、あなたは少しずれていました。URLは関数ではなく、Webサイトの実際のURLである必要があります。例/Functions/CallTargetFunctionとして、次のようなコントローラーを作成します。

public class FunctionsController : Controller
{
    public ActionResult CallTargetFunction()
    {
        return Content(TargetFunction());
    }
}

これを行うことは、訪問するすべての人がそのhttp://yoursite.com/Functions/CallTargetFunction関数の結果を取得することを意味することに注意してください。

于 2013-01-22T14:33:26.747 に答える
0

関数は Web サーバーによって登録されているため、コード ビハインドでのみ呼び出すことができます。

コード ビハインドの外部から関数にアクセスできるようにする場合は、ASMX または WCF サービスとして登録する必要があります。

WCF サービスの設定については、「最初の WCF サービスの作成と使用」を参照してください。

セットアップして実行すると、コード ビハインドと同じように、Ajax を使用してメソッドを呼び出すことができます。

$.ajax({
        //Path to WCF Server and Target Method
        url: "http://localhost:PORT/wcfsvc/FooService.svc/Foo",
        type: 'get',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $(document.body).append(data);
        }
});

参照: jQuery から JSON として WCF を使用する

于 2013-01-22T14:18:54.907 に答える