如何从codeehind向HmlGenericControl添加JavaScript函数

How to add a JavaScript function to an HmlGenericControl from codebehind

本文关键字:添加 JavaScript 函数 HmlGenericControl codeehind      更新时间:2023-09-26

从服务器端,我正在向客户端动态注入一个input和button元素。我还想在每个函数中注入一个JavaScript函数。输入的功能应触发onchange,按钮的功能应为onclick

这就是我迄今为止所做的:

//js definition
string script = @"<script>";
script += @" function OnCroquis0BtnClick() 
             {
                 var fileUp = $('#File');
                 fileUp.trigger('click');
             }"; 
script += @"function OnCroquis0FileSelected() 
            {
                txtBx = document.getElementById('MainContent_txtBx');
                var fileUpload = document.getElementById('File');
                txtBx.value = fileUpload.files[0].name;
           }";
script += @"</script>";    
ClientScript.RegisterClientScriptBlock(GetType(), "testScript0" ,
 script);    
//html elemets definition
HtmlGenericControl input = new HtmlGenericControl(),
                   btn = new HtmlGenericControl();
input.TagName = "input";
input.ID = lbl.Text + "File";
input.Attributes["onchange"] = "OnCroquis0Fileselected()";
input.Attributes["style"] = "display: none;";
docRequeridosMainDiv.Controls.Add(input);
btn.TagName = "button";
btn.ID = "btn";
btn.InnerText = "Anejar";
btn.Attributes["onclick"] = "OnCroquis0BtnClick(); return false";
btn.Attributes["style"] = "margin-right:2%;";
docRequeridosMainDiv.Controls.Add(btn);

它们是可见的,样式正在被应用,但js不是。我想,由于任何html属性都是通过Attributes["attri"]添加的,也许js函数也可以。

谢谢,提前。

尝试使用RegisterStartupScript而不是RegisterClientScriptBlock

Page.ClientScript.RegisterStartupScript(this.GetType(), "testscript0", script, false);

这强制要求在加载页面中的所有元素之后执行脚本。

设法使其工作。在我的版本中,函数名放错了位置:P