разбить ASP.NET сайт на проекты
От: frigate  
Дата: 12.04.11 10:27
Оценка:
Есть ASP.NET страничка или контрол. Требуется запихать ее в отдельный проект и потом использовать эту конструкцию в других проектах. Как это реализовать?
В более общем случае — как сделать сайт из отдельных страничек разбросанных по нескольким проектам? Какие существуют подходы для решения этой (казалось бы естественной) задачи?
Re: разбить ASP.NET сайт на проекты
От: Neco  
Дата: 15.04.11 15:04
Оценка:
Здравствуйте, frigate, Вы писали:

F>Есть ASP.NET страничка или контрол. Требуется запихать ее в отдельный проект и потом использовать эту конструкцию в других проектах. Как это реализовать?

F>В более общем случае — как сделать сайт из отдельных страничек разбросанных по нескольким проектам? Какие существуют подходы для решения этой (казалось бы естественной) задачи?
С вебным повторным использованием визуальных компонент вообще плохо — в dll сборках нельзя создать web user control и потом его отовсюду использовать. Я не знаю, чем это продиктовано и интересно бы узнать как с этим на Java, например.

Один из подходов это отказаться от визуальной разработки компонент и фигачить всё кодом. Это так назваемые Custom Server Control'ы (так кажется). Неприятно, нудно, сложно, но работает. Также можно и свою страницу определить, а потом уже использовать её в веб-проекте как базовый класс.
всю ночь не ем, весь день не сплю — устаю
Re[2]: разбить ASP.NET сайт на проекты
От: frigate  
Дата: 15.04.11 15:51
Оценка:
N> С вебным повторным использованием визуальных компонент вообще плохо...
Сейчас как раз ищу на stackoverflow на предмет "share asp.net pages".
Вроде решения есть... Хотя ощущения идеальности пока нет

N> Custom Server Control'ы (так кажется).

Как раз контролы вынести в отдельный проект судя по всему гораздо проще, чем страницы.
Re: разбить ASP.NET сайт на проекты
От: divergo  
Дата: 15.04.11 19:09
Оценка:
Есть только идея как выполнить страницу, в боевых условиях не эксплуатировалась,
тестовый пример работает.

создал страницу
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 страницы логично использовать хендлер.
Пробуйте
Re[2]: разбить ASP.NET сайт на проекты
От: frigate  
Дата: 18.04.11 16:00
Оценка:
D>Есть только идея как выполнить страницу...
На этой идее базируется вот такой пример проекта Embedded UserControls.
Re[2]: разбить ASP.NET сайт на проекты
От: frigate  
Дата: 18.04.11 16:07
Оценка:
D>Есть только идея как выполнить страницу...
А еще лучше — Load WebForms and UserControls from Embedded Resources.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.