-1

私はそれを呼び出したい JavaScript 関数を持っていますRazor C# Function。HTML では簡単ですが、JavaScript では多くのコンパイル エラーが発生し<text> tagます。トリックを試しましたが、何も機能しませんでした。

getHTML は My JavaScript 関数であり、getPageSource は文字列を返す C# 関数です。

<script language="javascript" type="text/javascript">

        function getHTML() {
            var html = "@getPageSource("http://www.google.com")" ;       
            alert(html);
        }

</script>

where@getPageSourceは html の上で定義されており、HTML コード内でうまく機能しています

Razor コードを JavaScript 変数に割り当てる方法はありますか?

4

2 に答える 2

5

クライアント側でサーバー側の機能を実行することはできません。Razor は、返される HTML コードをサーバーで生成する際にロジックを使用できるようにするためにのみ使用されます。

それが文字列を返す C# 関数である場合は、引用符で囲む必要があります。そうしないと、ブラウザが応答を解析するときに Javascript 文字列として解釈されません。

var html = '@getPageSource("http://www.google.com")';

getPageSource("http://www.google.com") が内部に引用符を含む文字列を返す場合、javascript は一貫性がなく、JS 文字列を作成できないことに注意してください。メソッドが を返したとします<div> ' hello ' </div>。それは次のようになります:

var html = '<div> ' hello ' </div>';

問題が見えますか?

HTML C# 文字列を JS 文字列として使用できるものに変換するには、これを参照してください。 http://codeasp.net/blogs/raghav_khunger/microsoft-net/722/how-to-escape-single-quotes-in-c-so-that-the-string-can-be-used-in-javascript

'すべてを に置き換える必要があり\\'ます。文字列は完全に HTML コードに渡されることに注意してください。あなたのコードが を返したと想像してください"It's blue"。HTML に記述すると、次のように終了します(文字列の外側と見なされ、ブラウザによって解析エラーが発生することにvar str = 'It's blue'注意してください)。"s blue"JS でそれを記述するにはvar str = 'It\'s blue'、引用符が終了文字列の引用符ではなく、文字列に含まれていることをブラウザが認識できるようにする必要がありました。C# にダッシュを含めるには、返される文字列を"It\\'s blue"一度置換する'必要があります\\'

于 2012-12-21T15:22:32.147 に答える
1

JavaScript 関数ですかgetPageSource()、それとも C# 関数ですか?

JavaScript の場合は、プレフィックスを付ける必要はありません@。C# の場合は、引用符を追加します。

var html = '@getPageSource("http://www.google.com")';
于 2012-12-21T15:18:36.497 に答える