从后面的代码调用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);
}
}
你可以调用从按钮本身的功能,无需回发。
<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:
。在这种情况下,你甚至不需要外部文件。
希望它会有所帮助。 我最好的,亚历克斯