Как программно добавить элемент управления ASP.NET внутри ASCX во внешний RequiredFieldValidator? - PullRequest
3 голосов
/ 09 июля 2009

У меня есть раскрывающийся список внутри пользовательского элемента управления (ASCX), который я хочу проверить со страницы, на которой я разместил ASCX, но когда я устанавливаю ControlToValidate в раскрывающийся список, страница жалуется, что это не может быть найдено. Спасибо за любую помощь / предложения.

Ответы [ 3 ]

5 голосов
/ 09 июля 2009

Предоставьте раскрывающийся список с открытым свойством в вашем пользовательском элементе управления:

public DropDownList DropDownToValidate
    {
        get
        {
            return ddlTest;
        }
    }

Затем используйте уникальный идентификатор раскрывающегося раскрывающегося списка, чтобы настроить элемент управления для проверки при загрузке страницы, на которую вы сбросили пользовательский элемент управления:

protected void Page_Load(object sender, EventArgs e)
{

    RequiredFieldValidator1.ControlToValidate = WebUserControl1.DropDownToValidate.UniqueID;
}
3 голосов
/ 09 июля 2009

Единственный способ, которым я знаю, это сделать в вашем классе управления пользователями:


[ValidationProperty("Foo")]
public class MyUserControl : UserControl
{
     public string Foo
     {
          get { return(yourDropDown.SelectedValue); }
     }
}

И затем на странице вы размещаете пользовательский элемент управления:


<asp:RequiredFieldValidator ControlToValidate="yourUserControlName" runat="server" ErrorMessage="You are required to make a selection" />

Не совсем то же самое, но это единственный обходной путь, который я знаю.

1 голос
/ 12 декабря 2009

Я думаю, что лучший способ проверить пользовательский контроль - это использовать публичный метод в вашем пользовательском контроле:

public void Validate() {
  reqRecipientName.Validate();
  reqRecipientMail.Validate();
  valRecipientMail.Validate();
  reqRecipientPhone.Validate();
}

, где reqRecipientName, reqRecipientMail ... - идентификаторы валидаторов (они также являются ascx). А затем на странице внутри отправить вызов метода controlId.Validate(); Это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...