如何使用字符串可以转换UserControl

有没有什么方法/可能性我可以用UserControl替换字符串?

除了LoadControl并将其添加到另一个控件,如页面或占位符。

原因是用户在页面上添加内容并输入类似{uc:test}的字符串,我想解析此文本并用UserControl替换{uc:test}。

换一种说法 ; 用户输入将是“bla bla bla {uc:test} bla bla”,当我从数据库中检索它时如何注入usercontrol并将其替换为{uc:test}

谢谢。

尝试使用LoadControl方法动态加载用户控件,并在回发期间将它们添加到页面中。

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

你可以……将它添加到你的页面的控件集合中:

  this.Page.Controls.Add(someControl); 

或者……将其添加到另一个控件的控件集合中

  someExistingPlaceHolder.Controls.Add(someControl); 

如何使用正则表达式获取这样的标签

 List fields = new List(); foreach(Match match in Regex.Matches(str, @"\{([^\}]*)\}")) { fields.Add(match.Groups[1].Value); } 

如果您希望遵守所有用户输入,包括它们包含的任何控件引用,请使用ParseControl :

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

这将创建一个新的Control ,它将所有文本(“blah blah”)表示为Literal子控件,并创建新实例作为嵌套子控件。