Есть ASP.NET страничка или контрол. Требуется запихать ее в отдельный проект и потом использовать эту конструкцию в других проектах. Как это реализовать?
В более общем случае — как сделать сайт из отдельных страничек разбросанных по нескольким проектам? Какие существуют подходы для решения этой (казалось бы естественной) задачи?
N> С вебным повторным использованием визуальных компонент вообще плохо...
Сейчас как раз ищу на stackoverflow на предмет "share asp.net pages".
Вроде решения есть... Хотя ощущения идеальности пока нет
N> Custom Server Control'ы (так кажется).
Как раз контролы вынести в отдельный проект судя по всему гораздо проще, чем страницы.
Есть только идея как выполнить страницу, в боевых условиях не эксплуатировалась,
тестовый пример работает.
создал страницу
protected void btn_Click(object sender, EventArgs e)
{
lbl.Text = "It works!";
}
<asp:Label runat="server" ID="lbl"></asp:Label>
<asp:Button runat="server" ID="btn" Text="Test" onclick="btn_Click"/>
Перенес страницу в dll проект
ASPX файл установил как внедренный ресурс.
В pageload страницы веб проекта написал
var stream = new StreamReader(typeof(WebForm1).Assembly.GetManifestResourceStream("ClassLibrary1.WebForm1.aspx"));
var file= stream.ReadToEnd();
var fileName = Server.MapPath( HttpContext.Current.Request.ApplicationPath) + "tmp.aspx";
using(StreamWriter sw=new StreamWriter(fileName,false))
{
sw.Write(file);
}
var writer = new StringWriter ();
Server.Execute("tmp.aspx", writer,true);
Response.Write(writer.ToString());
Response.End();
Вместо pageload страницы логично использовать хендлер.
Пробуйте
D>Есть только идея как выполнить страницу...
На этой идее базируется вот такой пример проекта
Embedded UserControls.