PDA

View Full Version : ایجاد صفحه داینامیک با فرمت html



marzban
شنبه 06 مرداد 1386, 18:25 عصر
با سلام
شاید عنوان مناسبی برای سوال خودم نباشه ولی حقیقتا نمی دانستم چطور مطرحش کنم.
با همه ای احوال این طور مطرح می کنم
تو بعضی از سایتها هست که من می دونم سایتشون داینامیک هست ولی خروجی خودشون را بصورت html می دن یعنی پسوند صفحات html هست نه aspx
چطور این کار را انجام میدن
در هر صورت اطلاعات این صفحه html رو از بانک می خونه و نشون میده
با تشکر مرزبان

shahab_ksh
شنبه 06 مرداد 1386, 23:05 عصر
خروجی یک ادیتور یا داخل بانک اطلاعاتی که محتوای html هستش رو داخل یه فایل html با
نام دلخواه بریزید

nazaninam
شنبه 06 مرداد 1386, 23:22 عصر
همون طور که آقا شهاب فرمودن از یک Editor استفاده کن و توسط کلاس StreamWriter داخل یک فایل Html اونو بنویس ! البته اول فایل را باید ایجاد کنی ! کلا از کتابخانه System.IO استفاده کن

Alireza_Salehi
یک شنبه 07 مرداد 1386, 08:07 صبح
با سلام
شاید عنوان مناسبی برای سوال خودم نباشه ولی حقیقتا نمی دانستم چطور مطرحش کنم.
با همه ای احوال این طور مطرح می کنم
تو بعضی از سایتها هست که من می دونم سایتشون داینامیک هست ولی خروجی خودشون را بصورت html می دن یعنی پسوند صفحات html هست نه aspx
چطور این کار را انجام میدن
در هر صورت اطلاعات این صفحه html رو از بانک می خونه و نشون میده
با تشکر مرزبان

بوسیله یک DataTable یا DataSet و یک سند XSL (همان Template صفحه HTML) با دو خط کد می توانید خروجی HTML ایجاد کنید.

با این کار در صورت نیاز به هر گونه تغییری فقط و فقط فایل XSL باید تغییر کند و دیگر هیچ!

marzban
یک شنبه 07 مرداد 1386, 09:12 صبح
همون طور که آقا شهاب فرمودن از یک Editor استفاده کن و توسط کلاس StreamWriter داخل یک فایل Html اونو بنویس ! البته اول فایل را باید ایجاد کنی ! کلا از کتابخانه System.IO استفاده کن

خوب مساله ای که به ذهن من می رسه اینه که آیا اون فایل بصورت فیزیکی ایجاد می شه یانه مثل صفحات asp.net خواهد بود

marzban
یک شنبه 07 مرداد 1386, 09:16 صبح
بوسیله یک DataTable یا DataSet و یک سند XSL (همان Template صفحه HTML) با دو خط کد می توانید خروجی HTML ایجاد کنید.

با این کار در صورت نیاز به هر گونه تغییری فقط و فقط فایل XSL باید تغییر کند و دیگر هیچ!

خیلی ممنون از اینکه کمک می کنید
اگر قطعه کدی در اختیار دارید که می تواند به من کمک کند رو قرار بدید.
با تشکر مرزبان

nazaninam
یک شنبه 07 مرداد 1386, 10:18 صبح
کاملا به صورت فیزیکی است !

Alireza_Salehi
یک شنبه 07 مرداد 1386, 10:35 صبح
برای تولید خروجی HTML به کمک XML و XSL مراحل کلی به صورت زیر است:

1. ایجاد یک سند XSL (همان Template صفحه HTML) - یک بار برای همیشه
2. تولید خروجی XML برای داده های خوانده شده از دیتابیس
3.تبدیل خروجی XML به HTML توسط XSLT

فرض کنید یک جدول با فیلد های زیر داریم:
1. id
2. name
3. link
می خواهیم یک صفحه شامل یک جدول داشته باشیم که شماره و نام های موجود را نمایش دهد. که نام به صورت لینک باشد.

ابتدا یک فایل XSLT به پروژه اضافه کنید و محتویت آن را به صورت زیر تغییر دهید:


<?xmlversion="1.0"encoding="utf-8"?>
<xsl:stylesheetversion="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:templatematch="/">
<html>
<bodystyle="text-align:center;direction:rtl">
<tablestyle="direction:rtl;background-color:Lime;border-color:Black;border-width:2px">
<tr>
<td>شماره</td>
<td>نام-لینک</td>
</tr>
<xsl:for-eachselect="DocumentElement/WebSite">
<tr>
<td>
<xsl:value-ofselect ="id"/>
</td>
<td>
<a>
<xsl:attributename="href">
<xsl:value-ofselect ="link"/>
</xsl:attribute>
<xsl:value-ofselect ="name"/>
</a>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

حالا به هر طریقی که می توانید داده ها را بخوانید و خروجی XML تولید کنید. در این جا از DataTable و DataReader و متد WriteXML استفاده کرده ایم:

SqlCommand cmd=new SqlCommand(
"SELECT * FROM Table_1",
new SqlConnection("ConnectionString"));
cmd.Connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable("WebSite");
dt.Load(dr);
cmd.Connection.Close();
dt.WriteXml(Server.MapPath("~/input.xml"));


آخرین مرحله تبدیل XML بدست آمده در مرحله قبل به HTML توسط کلاسXslTransform است:


XslTransform xslt = new XslTransform();
xslt.Load(Server.MapPath("~/XSLTFile.xsl"));
xslt.Transform(Server.MapPath("~/input.xml"), Server.MapPath("~/output.html"));



نکات مهم :
1. به حروف کوچک و بزرگ دقت کنید چون XML و XSL به این مورد حساس است.
2. در این قسمت xsl:for-eachselect="DocumentElement/WebSite از سند XSL گره ریشه XML و سپس نام DataTable استفاده شده است ، که به آن دقت کنید.
3. در این مثال جهت سادگی برای تبدیل از فایل استفاده شده است ، می توانید بدون استفاده از فایل نیز این کار را انجام دهید.

4. می توانید برای سند XSL مانند یک تابع پارامتر تعریف کنید تا علاوه بر فایل XML ورودی بتوانید قسمتهایی از HTML تولید شده را با پارامتر پر کنید (). (مثلا آدرس CSS یا امثالهم یا مواردی که در دیتابیس وجود ندارد - مثل عنوان صفحه و ...)
5. برای استفاده از این روش باید با XML و XSL آشنایی کافی داشته باشد.


برای اطلاعات تکمیلی در زمینه XML و XSL و کاربردهای آنها در ASP.NET این کتاب را بخوانید:
Professional ASP.NET 2.0 XML (http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764596772.html)

Nightbat
یک شنبه 07 مرداد 1386, 10:59 صبح
این روشها مزیتی هم نسبت به خود aspx داره ؟

Alireza_Salehi
یک شنبه 07 مرداد 1386, 11:21 صبح
این روشها مزیتی هم نسبت به خود aspx داره ؟

حتما داره اگر شما بخواهید این کار را با کد انجام بدید باید کلی کد بنویسید و یک Template رو با کد دستکاری کنید ، حلقه بنویسد ، شرط بذارید و .... این طوری هیچ کدوم اینها لازم نیست ،

فقط کافیه به نحوه ایجاد یک سند XSL مسلط بشید!