我有一个asp.net页面,它的一些控件是动态创建的,这些控件是以下之一;文本框,日历或下拉列表。
在某些情况下,这些控件应根据从db读取的标志进行验证?
有没有办法验证 动态创建控件?
答案 0 :(得分:1)
基本上,您需要通过代码创建验证器,并通过代码将它们附加到动态创建的控件上。然后,页面将与您在页面中的验证器一起呈现。
如果验证需要从db读取标志,那么可能使用自定义验证器,它允许您在客户端和服务器上设置特定逻辑以满足特定的验证要求。如果您不想,则不必提供客户端验证。
答案 1 :(得分:0)
您可以在创建这些控件的同时创建验证器
答案 2 :(得分:0)
当您动态创建任何控件时,还要附加所需的Validator控件,您可以在运行时启用/禁用验证器控件。
答案 3 :(得分:0)
我找到了解决这个问题的方法。 我对这个页面的一个主要问题是它启用了ajax,我需要验证动态创建的控件。
我的解决方案并且它正常工作,在创建Control时,我添加了一个输入属性,标记它是否需要,另一个属性标记它是否是要验证的字段?
使用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;");