Как к строке можно превратить UserControl - PullRequest
0 голосов
/ 08 октября 2009

Есть ли способы / возможности, которыми я могу заменить строку с UserControl?

кроме LoadControl и добавления его в другой элемент управления, например страницу или заполнитель.

Причина в том, что пользователь добавляет контент на страницу и помещает строку типа {uc: test}, и я хотел бы проанализировать этот текст и заменить {uc: test} на UserControl.

другими словами; Пользовательский ввод будет «bla bla bla {uc: test} bla bla», когда я получу его из базы данных, как я могу ввести usercontrol и заменить его {uc: test}

спасибо.

Ответы [ 2 ]

1 голос
/ 08 октября 2009

Попробуйте метод LoadControl для динамической загрузки пользовательских элементов управления и добавления их на страницу во время обратной передачи.

Control someControl = LoadControl("~/SomeControl.ascx");

Вы можете ... Добавить его в коллекцию элементов управления вашей страницы:

        this.Page.Controls.Add(someControl);

Или ... Добавить его в коллекцию элементов управления другого элемента управления

        someExistingPlaceHolder.Controls.Add(someControl);

Как насчет получения таких тегов с помощью regex

List<string> fields = new List<string>(); 
foreach(Match match in Regex.Matches(str, @"\{([^\}]*)\}")) { 
    fields.Add(match.Groups[1].Value); 
} 
0 голосов
/ 08 октября 2009

Если вы хотите, чтобы все пользовательского ввода были соблюдены, включая любые включенные контрольные ссылки, используйте ParseControl :

string markup = input.Replace("{","<").Replace("}",">");
Control control = this.Page.ParseControl(markup);

this.Page.Controls.Add(control);

Это создаст новый Control, который представляет весь текст ("бла-бла") как дочерние элементы управления Literal, а также создаст новые экземпляры <uc:test> как вложенные дочерние элементы управления.

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