چرا از UserControl استفاده نمی کنی (تو بیشتر سایت ها برای چند پوسته بودن مورد استفاده است).
یا یه روش دیگه از فایل Html . که البته اینجا من روش html رو می گم.
فایل test.html رو ایجاد کن
<table style="width:100%;"><tr>
<tr>
<td >[:Body:]</td>
</tr>
</table>
لازم خواهد بود تا کنترل سفارشی مان را به صورت دستی رند کنیم پس:
public static string RenderControls(ControlCollection ctrls)
{
if (ctrls == null) return "";
StringWriter strwriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(strwriter);
foreach (Control ctrl in ctrls)
{
ctrl.RenderControl(writer);
}
string result = strwriter.ToString();
strwriter.Close();
writer.Close();
return result;
}
خواندن محتویات فایل:
public static string LoadHtml(string name)
{
string html = File.ReadAllText(HttpContext.Current.Server.MapPat h(name));
}
و سر انجام مراحل رندر کنترل را باز نویسی می کنیم:
protected override void Render(HtmlTextWriter writer)
{
const string tagContent = "[:Body:]";
base.Render(writer);
string theme = LoadHtml("test.html");
string content =RenderControls( this.Controls);
writer.Write(theme.Replace(tagContent, content));
theme = null;
content = null;
}
به شخصه روش UserControl ها رو بیشتر می پسندم چونکه امکان مانور روش زیاد است و حافظه کمتری رو کنترل ها و تم های بزرگ برای asp.net داره.
اگر مایل باشید یه نمونه برای آن هم مثال بزنم.