asp.net
  • validation
  • repeater
  • 2016-08-18 89 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

    相關問題