我在我的代码中重新开发并尝试使用asp.net必需字段验证器验证文本框。但验证麻烦 没有显示,我打开了开发人员工具,发现风格="可见性:隐藏"添加到必填字段验证器中。 以下是我的代码
<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 :(得分:0)
style="visibility:hidden"
是默认行为。当错误消息需要显示时,它会更改为style="visibility: visible;"
。因此,您可能没有错误。
验证器是&#39; RequiredFieldValidator&#39;,因为正在验证的文本框已经填充了值&#34; TestCategory&#34;没有错误。如果只是将文本添加到“保存”按钮(没有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)
另一个优点是验证器现在可以在没有回发的情况下工作,这可以节省往返服务器。
并且总是进行服务器端验证,但尝试在没有回发的情况下进行第一次验证。
<强>更新强>
您想要的可能是每个项目的验证。由于您的验证组始终是相同的,因此它将触发所有文本框。试试这个:
<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>