It is possible to use the Fortis Dyanmic Placeholders in Web Forms however you'll need to create your own method of generating the placeholder ID.
The MVC implementation is as follows:
public static HtmlString DynamicPlaceholder(this SitecoreHelper helper, string placeholderName)
{
var placeholder = PlaceholdersContext.Add(placeholderName, RenderingContext.Current.Rendering.UniqueId);
return helper.Placeholder(placeholder);
}
True Clarity wrote a blog post on how to implement a dynamic placeholder control for Web Forms. Below is an adapted version that should work with the Fortis Dynamic Placeholder library.
public class DynamicPlaceholder : WebControl, IExpandable
{
private string key = Placeholder.DefaultPlaceholderKey;
public string Key
{
get { return _key; }
set { _key = value; }
}
protected override void CreateChildControls()
{
var parentRendering = this.Parent as Sublayout;
if (parentRendering == null)
{
// Problem - parent control isn't a Sublayout (why?)
}
var renderingId = parentRendering.ID
var dynamicKey = PlaceholdersContext.Add(placeholderName, renderingId);
var placeholder = new Placeholder();
placeholder.Key = dynamicKey;
this.Controls.Add(placeholder);
placeholder.Expand();
}
protected override void DoRender(HtmlTextWriter output)
{
base.RenderChildren(output);
}
public void Expand()
{
this.EnsureChildControls();
}
}
Please note that I haven't tested the above at all and I've just written it :). It's likely it may need tweaking but I think the general approach is there. I hope this helps!