0

次の文字列を作成しようとしています。

<script runat="server" type="text/C#">
    protected void Page_Load(object sender, EventArgs e)
    {
        Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'></script>");
    }
</script>

それでも、VSで「定数の改行」というコンパイルエラーが発生します

4

3 に答える 3

2
"<script type='text/javascript' langauage='javascript' src='test.js'></script>"

そうですね、<script> 要素内に </script> を含む文字列があります。これで外側の <script> が閉じられるため、runat-server スクリプト内にあるように見えるコードは次のようになります。

protected void Page_Load(object sender, EventArgs e)
{
    Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'>

そして、エラーが示すように、これには「終了二重引用符のない文字列」が含まれています。

他のスクリプト ブロックがマークアップとして認識しないように、文字をエスケープしてみてください。

"\x3Cscript type='text/javascript' src='test.js'>\x3C/script>"
于 2009-09-11T15:40:52.750 に答える
1

あなたの問題は終了スクリプトタグです

http://support.microsoft.com/kb/827420

それを解決する:

".....<"+"/SCRIPT>"

または多分

".....<\/script>"

代わりに ClientScriptManager を使用し、RegisterClientScriptInclude を使用してください。この方法では、ファイル名を文字列にするだけで済みます。

ClientScriptManager.RegisterClientScriptInclude

ClientScriptManager scriptManager = new ClientScriptManager(); scriptManager.RegisterClientScriptInclude("filename.js");
于 2009-09-11T15:30:43.577 に答える
-1
@"<script language="Javascript" src="/utility/thickbox/thickbox-custom.js"></script>"
于 2009-09-11T15:12:55.833 に答える