1

GetResultメソッドを含むホームコントローラーを含むMVCアプリがあります。

public int GetResult()
        {
            return 3;
        }

私はそれをjavascriptファイルで使用して呼び出します:

$.post('/Home/GetResult', null, function (data) {

        alert(data);

    });

そしてそれはうまくいきます。

しかし、私はそれを呼び出すためのハードコードされていない方法を使用しようとしました

$.get('@Url.Action("GetResult", "Home")', null, function (data) {

        alert(data);

    });

動作していません。500エラーが発生しています。

次のURLにアクセスしようとしています。

http://localhost:xx/Home/@Url.Action(%22GetResult%22,%20%%22Home%22)

まあ、これは明らかに正しくありません。

誰かが私が間違っていることを知っていますか?

4

2 に答える 2

2

JavaScript ファイル内で Razor 構文を使用することはできません。Razor は、機能するために ASP.Net によって解析される必要があるサーバー側のスクリプト構造です。

次の 2 つのオプションがあります。

オプション 1:

スクリプトを.cshtmlビュー ファイルに移動します。

オプション 2:

URL をパラメーターとして受け取り、ビューから呼び出す JavaScript 関数を作成します。

function foo(posturl){
    $.post(url, null, function (data) {
        alert(data);
    });
}

/* View */
foo('@Url.Action("GetResult", "Home")');
于 2012-07-24T21:23:24.200 に答える
0

Razor ビューでのみ機能します。外部 JavaScript ファイルでアクセスする場合は、かみそりビューで HTML ヘルパー メソッドを使用してパス名を取得し、それをグローバル Java スクリプト変数に保持して、外部 JavaScript でアクセスすることができます。ファイル

あなたのビューで、

<script type="text/javascript>
  var globalGetResultPath='@Url.ACtion("GetResult","Home)';
</script>

そして、外部スクリプトで次のように呼び出すことができます

$.get(globalGetResultPath, function (data) {
    alert(data);
});
于 2012-07-24T21:25:05.603 に答える