我有一个asp.net页面,它的一些控件是动态创建的,这些控件是下列之一;文本框,日历或下拉列表。
在某些情况下,应基于从db读取的标志来验证这些控件?
有什么方法可以验证动态创建的控件吗?
我找到了解决该问题的方法。我在此页面上遇到的主要问题之一是启用了Ajax,因此我需要验证动态创建的控件。
我的解决方案及其工作正常,在创建控件时,我向其添加了输入属性以将其标记为必需,而将另一个属性标记为它是要验证的字段?
使用Javascript,我会遍历所有带有属性“动态控制”的输入标签,并基于“验证属性”来验证它与否。简单吧?
示例代码:在创建控件时,将其标记如下
txtBox.Attributes.Add("Type", "T"); // Type of control. txtBox.Attributes.Add("IsKeyField", "Y"); // Is dynamically created field. txtBox.Attributes.Add("IsMandatory", "Y"); // Is mandatory or not?
JavaScript代码
var inputControls = document.getElementsByTagName("input"); for(var i=0 ; i<inputControls.length ; i++) { if ( inputControls[i].getAttribute("IsKeyField") == "Y" ) { if (inputControls[i].getAttribute("Type") == "T" || (inputControls[i].getAttribute("Type") == "C")) { if(inputControls[i].getAttribute("IsMandatory") == "Y") { if(inputControls[i].value == "") { errorMsg += "\n" + inputControls[i].getAttribute("KeyField_Name") + " is required."; isValidated = false; } } } } }
当然,您可以在单击所需按钮的同时调用该代码。
btnUpload.Attributes.Add("onClick", "javascript:if(!ValidateMandatoryFields()) return false;");