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

问题描述:

我试图从后面的代码中的一个按钮单击调用它自己的文件中的JavaScript方法。从后面的代码调用Javascript函数ASP.NET

aspx文件

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

JS文件

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

的问题是,这不会调用draw图像的方法,我怀疑这是造成js文件是它自己的文件,但我不当然。

任何帮助,你可以给予将不胜感激。

看到http://msdn.microsoft.com/de-de/library/z9h4dk8y.aspx

试试这个

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

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

如果需要回发,您需要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; 
    } 
} 

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

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

Page_Load事件。

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

希望它会有所帮助。 我最好的,亚历克斯