验证控制中的“服务器标记格式不正确”错误

时间:2012-07-03 08:15:49

标签: asp.net validation-controls

当我在源代码中放置控件的唯一ID时出现此错误。以下是源代码。

<ucPopupMember:PopupMember ID="PopupMember_MemberID" 
                           runat="server"                                
                           TextBoxMaxLength="12"
                           ValidationGroup="SpkrSetupGroup"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator_MemberID" 
                            runat="server" 
                            ErrorMessage="Member ID is required"
                            Text="*"
                            CssClass="errorlabel"
                            ValidationGroup="SpkrSetupGroup"
                            Display="Dynamic"
                            ControlToValidate="ctl00$ContentPlaceHolder_MainContent$TabContainer1$TabPanel_Entry$PopupMember_MemberID$TextBox_MemberCode"/>

如何更改或修复此问题?由于“$”符号,我遇到了问题。

[更新]要验证的控件(文本框)位于用户控件内。

2 个答案:

答案 0 :(得分:1)

您需要为ControlToValidate属性指定控件的“服务器”ID。两个控件都需要存在于同一个容器中。

在PopupMember控件中添加验证器:

<asp:RequiredFieldValidator ID="RequiredFieldValidator_MemberID" 
                            runat="server" 
                            ErrorMessage="Member ID is required"
                            Text="*"
                            CssClass="errorlabel"
                            ValidationGroup="SpkrSetupGroup"
                            Display="Dynamic"
                            ControlToValidate="MemberCode"/>

我想总是需要会员代码,所以你不需要再做任何事情了。

但是如果有时不需要MemberCode,请在PopupMember控件的代码后面添加一个属性。

public bool MemberRequired
{
   set {RequiredFieldValidator_MemberID.Visible = value;}
}

默认是必需的。如果您在默认情况下不需要它,请使用标记Visible="false"

答案 1 :(得分:0)

除了@Adrian所建议的,我认为开始和结束应该是这样的:

<asp:RequiredFieldValidator>

</asp:RequiredFieldValidator>