ASP.NET ile Dinamik Sayfalar Oluşturma

Asp.Net ile Sql server veritabanını kullanarak, dinamik sayfalar oluşturabilirsiniz. Temel seviye de kendinizi geliştirebilirsiniz.

Merhabalar,

ASP.NET ile dinamik sayfa yapımını bugün en temel şekilde yapacağız. Bu konu da zorlanan ya da yeni başlayan arkadaşlar için çok yardımcı olacak bir konudur. Temel mantığı anladıktan sonra zamanla kendinizi geliştirebilir yeni projelerde daha rahat çalışabilirsiniz.

Öncellikle SQL veritabanımızı oluşturalım.

Şimdi Visual studio da bir tane ASP.NET Web Application projesi açalım. Ve web.config dosyamıza aşağıdaki veritabanı bağlantımızı kendinize göre ayarlayın.

<connectionStrings>
        <add name="constr" connectionString="Data Source=MUSTAFAYAVUZ;Initial Catalog=DynamicPages;integrated security=true"/>
    </connectionStrings>

Şimdi de projemize 2 adet sayfa ekleyelim. Bunlar şöyle olsun. AddPage.aspx ve DynamicPage.aspx olsun. Default.aspx sayfasını silmeyin kalsın.

AddPage.aspx sayfasına aşağıdaki kodları ekleyelim.

<table border="0" cellpadding="0" cellspacing="0">
    <tr>
            <td>
                Sayfa İsmi:
            </td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="txtPageName" runat="server" />
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                Başlık:
            </td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="txtTitle" runat="server" />
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                İçerik:
            </td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" />
            </td>
        </tr>
        <tr>
            <td>
                &nbsp;
            </td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClick="Submit" />
            </td>
        </tr>
    </table>

AddPage.aspx.cs sayfasına btnSumbit’in OnClick olayına aşağıdaki kodları yazalım. Kodların yayın kısa açıklamalar yazacağım.

protected void Submit(object sender, EventArgs e)
    {
        string query = "INSERT INTO [Pages] VALUES (@PageName, @Title, @Content)"; //Sql veritabanına kayıt ekleme kodu
        string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;//conString değişkenine bağlantı yolumuz atadık.
        using (SqlConnection con = new SqlConnection(conString))// bağlantı nesnemiz oluşturduk.
        {
            using (SqlCommand cmd = new SqlCommand(query, con))//bir komut nesnesi oluşturuyoruz. Bu nesneyi veritabanına bağlıyoruz. Komut nesnesi çalıştığı zaman aşağıdaki kodları gerçekleştirecek. Yani veritabanına aşağıdaki parametreler sayesinde sayfa adı, başlığı ve içerikleri veritabanımıza ekleyeceğiz. 
            {
                cmd.Parameters.AddWithValue("@PageName", txtPageName.Text.Replace(" ", "-"));
                cmd.Parameters.AddWithValue("@Title", txtTitle.Text);
                cmd.Parameters.AddWithValue("@Content", txtContent.Text);
                con.Open();// bağlantı açılıyor.
                cmd.ExecuteNonQuery();//kayıtlar veritabanına ekleniyor.
                con.Close();//bağlantı kapatıyoruz.
                Response.Redirect("~/Default.aspx");//Default.aspx sayfasına yönlendiriyoruz.
            }
        }
    }

Default.aspx sayfamızı aşağıdaki gibi düzenliyoruz.

 <h2>
        Dinamik Sayfalar </h2>
    <br />
    <asp:HyperLink NavigateUrl="~/AddPage.aspx" Text="Sayfa Ekle" runat="server" />
    <hr />
//Sayfa başlıklarına göre sayfalarımız listeliyoruz 
    <asp:Repeater ID="rptPages" runat="server">
        <ItemTemplate>
            <%# Container.ItemIndex + 1 %> //buradaki kod index 0’dan başladığı için +1 yapıyoruz sayfa başlıklarını sıralarken başlığın yayında sıra numarasını sağlıyoruz.
            <asp:HyperLink NavigateUrl='<%# Eval("PageName", "~/Pages/{0}.aspx") %>' Text='<%# Eval("Title") %>'
                runat="server" />
// html’deki a href kodunun asp.net versiyonu diyebiliriz aslında. Burada link veriyoruz. Pek anlatılacak bir şey yok text özelliği sayfa başlığı Eval ile de veritabanından sayfanın ismini çağırıyoruz ve gideceği yolu yazıyoruz.
        </ItemTemplate>
        <SeparatorTemplate>
            <br />
        </SeparatorTemplate>
    </asp:Repeater>

Default.aspx.cs sayfasına aşağıdaki kodları yazalım.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)//Sayfa postback değilse BindPages() methodunu çağırarak repater nesenesini dolduruyoruz.Postback olayını araştırabilirsiniz. Onu burada ayrıca anlatmayacağım.
        {
            this.BindPages();
        }
    }

    private void BindPages()//Repater nesnesini doldurmak için veritabanından verileri çekiyoruz.
    {
        string query = "SELECT [PageName], [Title], [Content] FROM [Pages]";
        string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        rptPages.DataSource = dt;
                        rptPages.DataBind();
                    }
                }
            }
        }
    }

DynamicPage.aspx sayfamızı aşağıdaki gibi düzenliyoruz.

<h2>
<asp:Label ID="lblTitle" runat="server" />
</h2>
<hr />
<asp:Label ID="lblContent" runat="server" />

DynamicPage.aspx.cs sayfamızı açıyoruz ve aşağıdaki kodları yazıyoruz.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)// Sayfa postback değilse PopulatePage() methodunu çağır ve sayfayı doldur.
        {
            this.PopulatePage();
        }
    }

    private void PopulatePage()// Bu method ta Veritabanından WHERE [PageName] = @PageName koşulunu sağlayan sayfaya ait bilgileri getiriyor.
    {
        string pageName = this.Page.RouteData.Values["PageName"].ToString();
        string query = "SELECT [Title], [Content] FROM [Pages] WHERE [PageName] = @PageName";
        string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Parameters.AddWithValue("@PageName", pageName);
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataTable dt = new DataTable())
                    {
                        sda.Fill(dt);
                        lblTitle.Text = dt.Rows[0]["Title"].ToString();
                        lblContent.Text = dt.Rows[0]["Content"].ToString();
                    }
                }
            }
        }
    }

Evet şimdi projemizi çalıştırdığımızda Default.aspx sayfamız karşımıza çıkacak ve burada sayfa ekle butonu göreceğiz. Bu butona tıkladığımızda AddPage.aspx sayfasına geçiyoruz. Burada sayfamızı oluşturuyoruz ve veritabanına kayıt ediyoruz. Yeni bir sayfa ekledikten sonra Default.aspx sayfasına geçtiğimizi ve eklediğimiz sayfayı burada göreceğiz. Sayfa başlığına tıkladığımızda ise oluşturduğumuz sayfa içeriğini göreceğiz. Böylece Asp.Net ile Dinamik Sayfa oluşturmuş oluyoruz. Artık buradan sonra sizin kendi becerilerinize ve araştırmalarınıza kalmış.

Kendinizi geliştirmeniz dileğiyle,

Hoşçakalın.