如何从代码隐藏向HmlGenericControl添加JavaScript函数

时间:2015-11-07 22:04:30

标签: javascript c# html asp.net

从服务器端,我正在向客户端动态注入一个输入和按钮元素。我还想为每个注入一个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函数也可以。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试使用RegisterStartupScript而不是RegisterClientScriptBlock

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

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

答案 1 :(得分:0)

管理以使其正常运行。在我的版本中,我的功能名称放错位置:P

相关问题