Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在回发页面上插入javascript_C#_Javascript_Asp.net - Fatal编程技术网

C# 仅在回发页面上插入javascript

C# 仅在回发页面上插入javascript,c#,javascript,asp.net,C#,Javascript,Asp.net,我相信这是相当简单的,但我有困难让它工作。我想在我的页面中添加一个javascript函数,但只有在页面返回后才添加 因此,我有一个按钮,可以调用一些服务器端代码,当它完成并重新加载页面时,我希望调用javascript函数 考虑到这一点,我想我可以添加一个隐藏变量,并在单击按钮时进行设置,但我想我更愿意在页面加载时将javascript插入页面 这是可能的,甚至是一个好方法吗 谢谢, 尼尔 编辑:好的,这是我在C代码中的OnClick方法 protected void Save(object

我相信这是相当简单的,但我有困难让它工作。我想在我的页面中添加一个javascript函数,但只有在页面返回后才添加

因此,我有一个按钮,可以调用一些服务器端代码,当它完成并重新加载页面时,我希望调用javascript函数

考虑到这一点,我想我可以添加一个隐藏变量,并在单击按钮时进行设置,但我想我更愿意在页面加载时将javascript插入页面

这是可能的,甚至是一个好方法吗

谢谢, 尼尔

编辑:好的,这是我在C代码中的OnClick方法

protected void Save(object sender, EventArgs e)
{
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "<script type=\"text/javascript\">alert('hello world');</script>"); 
    EnforcementMatch(false);
    EnforcementMatch(true);
    ApplicationNotMatch();
    ApplicationMatch();
    Response.Redirect(Request.Url.ToString());
}
另一个编辑:刚刚意识到底部的response.redirect重新加载了我的页面,取消了我输入的代码,呸

您可以使用ClientScriptManager.RegisterClientScriptBlock


如果将其放置在按钮单击事件上,则不必担心它是否为回发。

将其放置在单独的脚本块中,仅在回发时渲染

<script type="text/javascript" runat="server" visible="<%#this.IsPostBack %>">
    TheCode();
</script>
你知道IsPostBack函数,对吗


此脚本将与updatepanel的每次回发一起触发

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(function ()    {
        alert('hello world');
    });
</script>

哪些浏览器支持脚本标记上的visible属性?W3C文档中似乎没有提到。不,浏览器永远不会看到它。如果将runat=server放入任何html标记中,asp.net会将其从普通文本转换为实际的Web.UI.HtmlControls.HtmlGenericControl。“visible”属性指示是否必须在页中呈现控件。因此,如果visible=false,这个标记将不会出现在浏览器接收到的页面中。当我添加runat=server属性时,我无法在标记之间编写javascript代码。我得到一个complie错误,说方法必须有一个返回类型alert123;事实上,我忘记了,脚本标记是runat=server规则的一个例外,因为您可以使用它们在标记中添加.NET代码,但请永远不要这样做。忘了我说过什么吧:是的,这是我尝试的第一件事,但是javascript没有出现在页面上。我还尝试将它放在Init、PreRender等事件中。我还尝试在服务器端单击事件中使用它,javascript不会出现在页面上。这不是在页面呈现后调用的吗?@Neil-应该会出现,您必须小心使用该方法。仔细检查您的Javascript,查看是否有MSDN示例中的脚本标记,如果仍然存在问题,请更新您的问题并向我们展示您正在使用的代码。
<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(function ()    {
        alert('hello world');
    });
</script>