调用.aspx页面的弹出窗口时出错,是不是正确的语法?

时间:2010-01-06 11:35:31

标签: popup

this.Page.ClientScript.RegisterClientScriptInclude( “utility.popupUrl(CaptchaLogin.aspx)”, “”);

1 个答案:

答案 0 :(得分:1)

不,那不对。当您注册客户端脚本 include 时,您应该提供包含您要执行的代码的javascript文件的URL。这将呈现为<script type="text/javascript" src="your url..."></script>

您要做的是RegisterScript Block 。在该方法中,您还需要确保将generateScriptTags标记(或其名称)标记为true

修改

关于你的评论,我不确切地知道你希望脚本做什么,但看起来你试图注册一个脚本块一个脚本包含,其中 a)不会去, b)不是原始问题的一部分。我会尝试逐步回答你需要改变的事情:

第一个参数type通常应该是对页面类型的引用。如果您使用的是用户控件,则可以通过this.Page.GetType()实现此目的,如果您在页面中,this.GetType()就足够了。无论您身在何处,都可以typeof(System.Web.UI.Page)

第二个参数不应包含任何实际脚本;它只是识别脚本的关键。您希望能够识别脚本,以便您可以检查它是否已注册,如下例所示。你可以选择几乎任何你的关键,就像你选择变量名一样。

第三个参数是您的实际脚本。如果您将第四个参数作为true传递,它可能只是一段javascript。如果第四个参数的值为false,则需要在第三个参数中手动包含<script>标记。

if(!ClientScript.IsClientScriptBlockRegistered("CaptchaLogin"))
    ClientScript.RegisterClientScriptBlock(typeof(Page), "CaptchaLogin", "utility.popupUrl('CaptchaLogin.aspx');", true);

现在,要包含脚本文件FailLogin.js,您根本无法使用RegisterClientScriptBlock。您需要在原始帖子中使用RegisterClientScriptInclude。这里,第一个参数也只是一个键。根本没有脚本。第二个参数是您要包含的文件的URL:

ClientScript.RegisterClientScriptInclude("CaptchaInclude", "/Public/JS/FailLogin.js");

我应该补充一点,我不确定你是否可以使用代字号~来量化RegisterClientScriptInclude中的网址,也许你可以。但是,我确信你绝对不能像在你在这个答案的评论中发布的代码那样在字符串中使用它。