我是否可以用UserControl替换字符串?
除了LoadControl并将其添加到另一个控件,如页面或占位符。
原因是用户在页面上添加了一个内容并放了一个像{uc:test}这样的字符串,我想解析这个文本并用UserControl替换{uc:test}。
换言之; 用户输入将是“bla bla bla {uc:test} bla bla”,当我从数据库中检索它时如何注入usercontrol并将其替换为{uc:test}感谢。
答案 0 :(得分:1)
尝试使用LoadControl方法动态加载用户控件,并在回发期间将它们添加到页面中。
Control someControl = LoadControl("~/SomeControl.ascx");
您可以...将其添加到您网页的控件集合中:
this.Page.Controls.Add(someControl);
或者......将其添加到另一个控件的控件集合
someExistingPlaceHolder.Controls.Add(someControl);
如何使用正则表达式获取这样的标签
List<string> fields = new List<string>();
foreach(Match match in Regex.Matches(str, @"\{([^\}]*)\}")) {
fields.Add(match.Groups[1].Value);
}
答案 1 :(得分:0)
如果您想要尊重用户输入的所有,包括他们已包含的任何控件参考,请使用ParseControl:
string markup = input.Replace("{","<").Replace("}",">");
Control control = this.Page.ParseControl(markup);
this.Page.Controls.Add(control);
这将创建一个新的Control
,它将所有文本(“blah blah”)表示为Literal子控件,并创建<uc:test>
的新实例作为嵌套子控件。