Calling Javascript function from code behind ASP.NET

我们两清 提交于 2019-12-24 10:47:27

问题


I'm attempting to call a javascript method in its own file from code behind on a button click.

aspx file

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;
}

The problem is that this wont call the draw image method, i suspect it's cause the js file is its own file but i'm not sure.

Any help you could give would be greatly appreciated.


回答1:


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

try this

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



回答2:


1). If the function is stored in external file (e.g. MyScript.js) then you should include it in the <head> section of the web page and add onclick event to the button, like:

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

in Page_Load event.

2) Another approach is to assign the entire javascript function to a string variable and then pass it instead of {YourFunction} prefixed with javascript:. In this case you don't even need the external file.

Hope it will help. My best, Alex




回答3:


I presume you already included the script file in your page.

If you require the postback, you need 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


You can call the function from your button itself, without the postback.

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

and in the script

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;
    }
}


来源:https://stackoverflow.com/questions/16410968/calling-javascript-function-from-code-behind-asp-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!