Let\'s say I have a string that I retrieve from a DB like:
\"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore e
I believe this is possible if you split your text into 2 labels instead of one. I wrote up a quick sample to demonstrate. When you parse your string from the db, if there is text before and after your dynamic control than just set the BeginText and EndText properties of DynamicControl.
public class DynamicControl
{
public String BeginText { get; set; }
public String EndText { get; set; }
public String ControlName { get; set; }
public Dictionary ControlProperties { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//read strings from db
var dynamicControlStrings = GetStringsFromDB();
//parse strings into list of dynamicControls
var dynamicControls = ParseStringsToDynamicControls(dynamicControlStrings);
foreach (var dynamicControl in dynamicControls)
{
CreateControl(dynamicControl.BeginText, dynamicControl.EndText, dynamicControl.ControlName, dynamicControl.ControlProperties);
}
}
private void CreateControl(string beginText, string endText, string controlName, Dictionary controlProperties)
{
var beginLabel = new Label()
{
Text = beginText
};
var dynamicControl = GenerateDynamicControl(controlName, controlProperties);
var endLabel = new Label()
{
Text = endText
};
var span = new HtmlGenericControl("span");
span.Controls.Add(beginLabel);
span.Controls.Add(dynamicControl);
span.Controls.Add(endLabel);
form1.Controls.Add(span);
}
//you would create your dynamic control here (such as the hyperlink) based on the control name and use reflection to set the properties
private WebControl GenerateDynamicControl(string controlName, Dictionary controlProperties)
{
}
protected void Page_Load(object sender, EventArgs e)
{
}
}