Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以ASP:DataList中的特定控件为目标_C#_Asp.net_.net - Fatal编程技术网

C# 以ASP:DataList中的特定控件为目标

C# 以ASP:DataList中的特定控件为目标,c#,asp.net,.net,C#,Asp.net,.net,我正试图找到一种方法,使asp:RegularExpressionValidor在asp:DataList asp:DataList位于以下代码中: <asp:DataList ID="dlUserInputs" runat="server" DataKeyField="tagname" ItemStyle-CssClass="paddingBottom20" CssClass="layout&quo

我正试图找到一种方法,使
asp:RegularExpressionValidor
asp:DataList

asp:DataList
位于以下代码中:

<asp:DataList ID="dlUserInputs" runat="server" DataKeyField="tagname" ItemStyle-CssClass="paddingBottom20" CssClass="layout">
    <ItemTemplate>
        <npo:UserInput ID="ctrlUserInput" runat="server" /> // user control 
    </ItemTemplate>
</asp:DataList>
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="UserInput.ascx.vb" Inherits="web_controls_publication_UserInput" %>

    ...
            <asp:Label ID="lblUserInput" runat="server" Visible="false" />
            <asp:TextBox ID="txtUserInput" runat="server" Visible="false" TextMode="MultiLine" Rows="10" Width="100%"/>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator" runat="server"
             ErrorMessage="<%$ Resources:PageText, LETTER_GOODSANDSERVICESXML_WRONGFORMAT %>" ValidationExpression="^[Cc]lass\s[0-9]{1,2}:\s{1}[^\n]*(?:\r?\n[Cc]lass\s[0-9]{1,2}:\s{1}[^\n]*)*$"
            ControlToValidate="txtUserInput"></asp:RegularExpressionValidator>    
    ...
我的问题是
RegularExpressionValidor
验证控件
txtUserInput
,但是如果我的数据列表调用(比方说)此代码3次,验证程序将应用于3次
txtUserInput
事件。我希望它只应用于第一个


提前感谢您的建议

是的,这是可以做到的。首先将属性添加到
UserInput.ascx
code-behind。在这种情况下,
Validate

public partial class UserInput : System.Web.UI.UserControl
{
    public bool Validate { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {    
    }
}
然后将新变量绑定到
RegularExpressionValidator的
Visible
属性

<asp:RegularExpressionValidator ID="RegularExpressionValidator" Visible='<%# Validate %>'
VB-使用


您将要编写一个自定义验证器--您可能能够利用RegularExpressionValidator这是唯一的解决方案?我的意思是,除了执行服务器端验证功能外,没有别的方法了?您可以创建一个名为
Index
的属性,然后将
ItemTemplate
中的ItemIndex绑定到
UserInput
用户控件的Index属性,然后在UserInput模板中,用
If
条件包围regularexpression验证器,该条件检查
Index==0
@BYU不确定您的意思——自定义验证器也可以执行客户端验证。
<asp:DataList ID="dlUserInputs" runat="server">
    <ItemTemplate>
        <npo:UserInput ID="ctrlUserInput" Validate='<%# Container.ItemIndex == 0 %>' />
    </ItemTemplate>
</asp:DataList>
Public Partial Class UserInput
    Inherits Web.UI.UserControl

    Public Property Validate As Boolean

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    End Sub
End Class