【发布时间】:2009-01-07 09:48:59
【问题描述】:
我有一个asp.net页面,它的一些控件是动态创建的,这些控件是以下之一;文本框、日历或下拉列表。
在某些情况下,这些控件应根据从 db 读取的标志进行验证?
有什么方法可以验证 动态创建的控件?
【问题讨论】:
我有一个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;");
【讨论】: