Хорошо,
Это кажется прямым, но у меня проблемы с поиском решения.
У меня есть 10 PeopleEditor
элементов управления.Каждый из элементов управления PeopleEditor
имеет CustomValidator
, а для свойства ControlToValidate
устанавливается конкретный элемент управления PeopleEditor
.Я назначаю функцию элементу управления на основе критериев.
Возможно, одна и та же функция проверки назначена нескольким CustomValidator
с, что, в свою очередь, означает, что функции необходимо знать, какой элемент управления ControlToValidate
проверяет.
Это понятно?
Вопрос состоит в следующем: как ссылаться на элемент управления из свойства ControlToValidate
в коде c # на стороне функции проверки?
Ниже приведены аналогичные проблемы, но они ссылаются на клиентскую или встроенную проверку: Как получить свойство 'controlToValidate' для ClientValidationFunction? и Извлечь значение из элемента управления в свойстве ControlToValidate в элементе управления CustomValidator?
ОБНОВЛЕНИЕ: У меня есть 10 из них на странице .aspx
:
<asp:Label ID="lblPeople0" runat="server" />
<SharePoint:PeopleEditor ID="edtPeople0" SelectionSet="User,SecGroup" AutoPostBack="false" CausesValidation="false" PlaceButtonsUnderEntityEditor="false" Rows="3" AllowEmpty="true" ValidatorVisible="true" runat="server" MultiSelect="true" MaximumEntities="100" ShowCreateButtonInActiveDirectoryAccountCreationMode="true" />
<asp:CustomValidator id="vldPeople0" display="Dynamic" runat="server" ErrorMessage="Error Message." ControlToValidate="edtPeople0" />
На странице .aspx.cs
я назначаю функцию проверки следующим образом:
vldPeople0.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler(validate_ThisAndThat);
Затем у меня есть этодля функции и нужно получить ControlToValidate
, чтобы получить ResolvedEntities
от него.
/// <summary>
/// Validation function.
/// </summary>
private void validate_ThisAndThat(Object source, ServerValidateEventArgs args)
{
foreach (PickerEntity entity in (ControlToValidate).ResolvedEntities)
{
String tmpPrincipalType = (entity.EntityData["PrincipalType"]).ToString();
if (tmpPrincipalType == "User")
{
if ((entity.EntityData["DisplayName"]).ToString().Contains("aString"))
{
args.IsValid = false;
}
}
}
}