2012-07-03 22 views
0

當我在源代碼中放置控件的唯一標識時,出現此錯誤。以下是源代碼。驗證控件中的「服務器標記形成不良」

<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"/> 

如何更改或修復此問題?由於「$」符號,我遇到了問題。

[更新]驗證控件(文本框)在用戶控件中。

回答

1

您需要爲ControlToValidate屬性指定控件的「服務器」標識。兩個控件都需要存在於同一個容器中。

在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"

+0

嗨阿德里安!我在這裏更新了這個問題。我忘了補充說我想驗證的控件是在用戶控件中。 – Musikero31

+0

你不能。驗證器需要位於該用戶控件中。將驗證程序移到那裏,創建一個名爲「必需」的新布爾屬性,它設置驗證程序的可見性。 –

+0

那麼你怎麼做到這一點? – Musikero31

0

除了什麼@Adrian的建議,我想開始與結束應該是這樣的:

<asp:RequiredFieldValidator> 

</asp:RequiredFieldValidator>