asp.net
  • validation
  • repeater
  • 2016-08-18 82 views 0 likes 
    0

    我在我的代码中重新使用并尝试使用asp.net验证文本框所需的字段验证程序。但验证messsage 不显示,我打开开发工具,发现style =“visibility:hidden”添加到所需的字段验证程序中。 下面是我的代码隐藏文件在asp.net Repeater中隐藏必需的字段验证程序

    <asp:Repeater ID="RepeaterCategory" runat="server" DataSource='<%# this.Categories.Count==0 ? null : this.Categories %>'> 
        <ItemTemplate> 
         <div> 
          <asp:Label runat="server" Visible="true" Text="Category" /> 
          <asp:PlaceHolder runat="server" Visible="true"> 
           <asp:TextBox ID="txtCategoryID" runat="server" value="1" /> 
           <asp:TextBox ID="txtCategoryName" runat="server" value="<%# (Container.DataItem as Category).Name %>" /> 
           <asp:RequiredFieldValidator runat="server" ErrorMessage="<br/>This is a required field" ControlToValidate="txtCategoryName" ValidationGroup="NewCategoryGroup"></asp:RequiredFieldValidator> 
          </asp:PlaceHolder> 
          <asp:LinkButton runat="server" ToolTip="Save" ValidationGroup="NewCategoryGroup" OnClick="SaveCategory_Click"><img src='<%# some path%>/images/save.gif' /></asp:LinkButton> 
          <asp:LinkButton runat="server" ToolTip="Close" OnClick="CloseCategory_Click"></asp:LinkButton> 
         </div> 
        </ItemTemplate> 
    </asp:Repeater> 
    

    代码

    protected void SaveCategory_Click(object o, EventArgs e) 
    { 
        Page.Validate("NewCategoryGroup"); 
        if (!Page.IsValid) 
         return; 
    
        //logic 
    } 
    

    任何人都可以建议如何启用它?

    回答

    0

    style="visibility:hidden"是默认行为。当错误消息需要显示时,它将更改为style="visibility: visible;"。因此你可能没有错误。

    验证器是'RequiredFieldValidator',并且由于正在验证的文本框已经填充了值“TestCategory”,所以没有错误。如果您只是将文本添加到保存按钮(没有ID标签),以便它变得可见,请从txtCategoryName文本框中删除该值,然后单击保存按钮,您将看到错误消息。

    这工作:

    <asp:TextBox ID="txtCategoryName" runat="server" value="" /> 
    <asp:RequiredFieldValidator runat="server" ErrorMessage="<br/>This is a required field" ControlToValidate="txtCategoryName" ValidationGroup="NewCategoryGroup"></asp:RequiredFieldValidator> 
    
    <asp:LinkButton runat="server" ToolTip="Save" ValidationGroup="NewCategoryGroup" OnClick="SaveCategory_Click" ID="LinkButton1">Save Me!</asp:LinkButton> 
    

    你并不需要此代码

    Page.Validate("NewCategoryGroup"); 
    if (!Page.IsValid) 
    

    另一个优点是,验证现在的工作没有回传,这样可以节省往返到服务器。

    并总是做服务器端验证,但尝试做第一次验证没有回发。

    UPDATE

    你想要什么可能是每个项目的验证。而且由于你的验证组总是一样的,所以它会为所有文本框启动。试试这个:

    <asp:Repeater ID="RepeaterCategory" runat="server"> 
        <ItemTemplate> 
         <div> 
          <asp:TextBox ID="txtCategoryName" runat="server" ValidationGroup='<%# "myVal_" + Container.ItemIndex %>' Text='<%# Eval("Category") %>' /> 
          <br /> 
          <asp:RequiredFieldValidator runat="server" Display="Dynamic" ErrorMessage="This is a required field<br />" ControlToValidate="txtCategoryName" ValidationGroup='<%# "myVal_" + Container.ItemIndex %>'></asp:RequiredFieldValidator> 
          <asp:LinkButton runat="server" ValidationGroup='<%# "myVal_" + Container.ItemIndex %>' OnClick="Button1_Click" ID="LinkButton1">Save Me!</asp:LinkButton> 
         </div> 
        </ItemTemplate> 
    </asp:Repeater> 
    
    +0

    更新我的代码请参阅 – RCM

    +0

    RequiredFieldValidator是否工作?如果没有复制我的例子,测试它,如果它的工作改变它,以满足您的需求。 – VDWWD

    +0

    验证程序不起作用 – RCM

    相关问题