从ASP.NET中的C#codebehind调用Javascript(Raphael.js库)

从ASP.NET中的C#codebehind调用Javascript(Raphael.js库),c#,javascript,asp.net,raphael,code-behind,C#,Javascript,Asp.net,Raphael,Code Behind,我试图从C#中的代码中调用一些函数。我正在寻找如何做到这一点,并能够调用一个警报显示时,我想它。然而,我不知道如何称呼其他事物 这就是我需要从代码背后调用的内容: var paper = Raphael("paper1", 800, 800); var Plan = paper.path("M100, 100 a 50, 50 0 0,1 50, 50 l -50 0 l 0, -50"); Plan.attr({ fill: "#FF6600" }); 我在一个普通的HTML文件上尝试过这些

我试图从C#中的代码中调用一些函数。我正在寻找如何做到这一点,并能够调用一个警报显示时,我想它。然而,我不知道如何称呼其他事物

这就是我需要从代码背后调用的内容:

var paper = Raphael("paper1", 800, 800);
var Plan = paper.path("M100, 100 a 50, 50 0 0,1 50, 50 l -50 0 l 0, -50");
Plan.attr({ fill: "#FF6600" });
我在一个普通的HTML文件上尝试过这些,但我不能使用它。我也在使用母版页,我发现的大多数示例都没有母版页,所以我对这一点很迷茫


任何人都可以提供帮助?

只能在客户端调用Javascript。如果您确实需要从服务器端调用它,那么可以使用asp:HiddenField的值作为返回时需要执行javascript代码的标志,然后在满足要求的情况下运行所需的javascript

但这不是一个好的解决方案,您可能应该尝试将服务器和客户端分开


无论如何,希望这能有所帮助

在.aspx页面中创建一个Javascript函数,然后从代码隐藏中调用该函数,如下所示:

html代码中的函数

function dostuff()
{
  // code here
}

C# code in code behind
 protected void callmethod()
    {
        StringBuilder oSB = new StringBuilder();
         Type cstype = this.GetType();


        try
        {
            oSB.Append("<script language=javaScript>");
            oSB.Append("dostuff();");
            oSB.Append("</script>");
            Page.ClientScript.RegisterClientScriptBlock(cstype, Guid.NewGuid().ToString(), oSB.ToString(), false);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            oSB = null;
        }
    }
函数dostuff()
{
//代码在这里
}
C#代码隐藏中的代码
受保护的void callmethod()
{
StringBuilder oSB=新的StringBuilder();
类型cstype=this.GetType();
尝试
{
oSB.追加(“”);
追加(“dostuff();”);
oSB.追加(“”);
Page.ClientScript.RegisterClientScriptBlock(cstype,Guid.NewGuid().ToString(),oSB.ToString(),false);
}
捕获(例外情况除外)
{
掷骰子;
}
最后
{
oSB=null;
}
}

那么如何让
alert()
调用正常工作呢?您不能在浏览器上真正“调用”任何内容,您只能输出一个
块作为浏览器将处理的页面的一部分。一旦你的页面显示完毕,你就不能再这样做了。(尽管有AJAX)我是在代码隐藏中这样做的,当下拉选择项更改时,ClientScript.RegisterStartupScript(typeof(Page),“SymbolError”,“alert('Error!!!);”,false);在你的问题中调用代码块应该以同样的方式工作。当你尝试时会发生什么?JS代码是否会输出到浏览器?浏览器的JS控制台中有错误吗?但是我如何在显示错误的地方写出所有的行呢?我在这方面算是个新手,我看过一些教程,但仍然不是专家:/n您是否尝试过复制粘贴JS代码来代替
alert()
,然后尝试修复出现的任何错误?那么您建议如何做到这一点?我只需要根据从数据库获取的某些项目的状态在屏幕上打印一些形状。我已经用CSS做了,但是愚蠢的IE没有用。我尝试了这个,警报成功了。这就是我现在在aspx文件函数draw(){var paper=Raphael(“paper1”,800800);var Plan=paper.path(“M100,100a 50,50 0,150,50 l-50 0 l 0,-50”);}中的代码隐藏:StringBuilder oSB=new StringBuilder();类型cstype=this.GetType();Append(“src=raphael.js”);追加(“draw();”);oSB.追加(“”);Page.ClientScript.RegisterClientScriptBlock(cstype,Guid.NewGuid().ToString(),oSB.ToString(),false);但它不起作用!有什么想法吗?src=raphael.js“?为什么要两次添加对js文件的引用?StringBuilder oSB=new StringBuilder();Type cstype=this.GetType();oSB.Append(“”);oSB.Append(“”);oSB.Append(“”);Page.ClientScript.RegisterClientScriptBlock(cstype,Guid.NewGuid().ToString(),oSB.ToString(),false);这应该行得通。请确保在.html/.aspx页面顶部加载脚本。这不是最佳做法,但我发现页面未完全加载时会出现问题。