从ASP.NET后面的代码调用Javascript函数

时间:2013-05-07 03:57:01

标签: javascript code-behind

我试图通过按钮点击后面的代码在自己的文件中调用javascript方法。

aspx文件

protected void Next_Click(object sender, EventArgs e)
{
    if (hidden.Value == "")
    {
        Response.Write(@"<script language='javascript'>drawImage();</script>");
    }
}

js file

function drawImage() {
    context.drawImage(video, 0, 0, 320, 240);
    var imgBase = canvas.toDataURL('image/jpeg');
    document.getElementById("hidden").value = imgBase;
}

问题是这不会调用绘图图像方法,我怀疑它是因为js文件是它自己的文件,但我不确定。

非常感谢您给予的任何帮助。

3 个答案:

答案 0 :(得分:1)

请参阅http://msdn.microsoft.com/de-de/library/z9h4dk8y.aspx

试试这个

string jquery = "drawImage();"
 ClientScript.RegisterStartupScript(typeof(Page), "a key", 
     "<script type=\"text/javascript\">"+ jquery +"</script>"
               );

答案 1 :(得分:0)

我认为你已经在页面中包含了脚本文件。

如果您需要回发,则需要ClientScriptManager.RegisterStartupScript Method (Type, String, String, Boolean) ..

protected void Next_Click(object sender, EventArgs e)
{
    if (hidden.Value == "")
    {
        ClientScriptManager cs = Page.ClientScript;
        cs.RegisterStartupScript(this.GetType(), 'startupScript', 'drawImage();', true);
    }
}

More Info from SO


您可以从按钮本身调用该功能,而无需回发。

<asp:Button runat="server" ID='next' OnClientClick="return drawImage();" />

并在脚本中

function drawImage() {
    if(document.getElementById("hidden").value != undefined || document.getElementById("hidden").value != "")
    {
        context.drawImage(video, 0, 0, 320, 240);
        var imgBase = canvas.toDataURL('image/jpeg');
        document.getElementById("hidden").value = imgBase;
        return false;
    }
}

答案 2 :(得分:0)

1)。如果函数存储在外部文件中(例如MyScript.js),则应将其包含在网页的<head>部分中,并将onclick事件添加到按钮中,如:

ButtonName.Attributes.Add("onclick", {YourFunction}); 

Page_Load事件中。

2)另一种方法是将整个javascript函数分配给字符串变量,然后传递它而不是前缀为javascript:的{​​YourFunction}。在这种情况下,您甚至不需要外部文件。

希望它会有所帮助。 我最好的,Alex