Aspnet QueryString makale gösterme

Başlık biraz anlamsız oldu anlıyorum sizi… Basit bir konu ile merhaba. Dinamik web sitelerinde kullanılan veritabanı ile ilişkili içerik yayınlama siteleri, kısaca basit makale okuma sitelerindeki database den makalenin sayfada nasıl gösterileceğini görelim.

Basit ve genel konu olduğu için araştırdığım kadarıyla çoğu site değinmemiş olaya. Direk konuya girersek, önceden hazırlarnmış veritabanımız ve tablomuz olsun. İçinde sade bir şekilde (id, baslik, makale) kolonları olsun. Görsel kısımda da bir ana.master sayfamız default ve makaleoku sayfalarımız olsun.

Birkaç ufak css ile ana.master sayfamızı başlıkların bulunduğu menü 300px ve yazının gösterileceği 600px lik alan ile ikiye bölünsün. Ana.master sayfamızın menüsüne güncel konular başlığı altında Datalist ekleyerek attaki gibi kodlayalım;

1
2
3
4
5
6
7
8
9
<asp:DataList ID="DataList1" runat="server" DataKeyField="yid"
        Width="224px">
        <ItemTemplate>
         
          <asp:HyperLink ID="HyperLink1" runat="server" Text ='<%# Eval("baslik") %>' NavigateUrl ='<%# "~/oku.aspx?giden="+Eval("yid")%>'>HyperLink</asp:HyperLink>              
         
         </ItemTemplate>
         <AlternatingItemStyle BackColor="Gainsboro" />
     </asp:DataList>

F7 ile kod kısmına gelerek postback ile kontrol edip load kısmına metod yardımı ile veri tabanımızdaki son 5 makaleyi gösterelim;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 if (Page.IsPostBack)
            {
                return;
            }
            doldur();

 private void doldur()
        {        
            SqlConnection sql = new SqlConnection("server=.; database=coder; trusted_connection=true;");
            SqlCommand cmd = new SqlCommand("Select top 5 * from tblyazi ", sql);
            DataTable dt = new DataTable();
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            sql.Open();
            adp.Fill(dt);
            SqlDataReader oku = cmd.ExecuteReader();
            if (oku.Read())
            {
                DataList1.DataSource = dt;
                DataList1.DataBind();

            }
            sql.Close();
        }

ana.master menümüzdeki son 5 yazıyı gösterdikten sonra makaleyi okuma kısmına geçebiliriz. Basit bir şekilde olması için makaleoku sayfasına başlık için label ve makale için bir label ekleyin. F7 ile kod kısman geçip load kısmına alttaki kodları yerleştirdikten sonra işlemi bitirelim;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected void Page_Load(object sender, EventArgs e)
        {
          SqlConnection sql = new SqlConnection("server=.; database=coder; trusted_connection=true;");

           
            int icerik = int.Parse(Request.QueryString["giden"]);

           
            SqlDataAdapter adp = new SqlDataAdapter("select * from makaletablosu where id=" + icerik, sql);
            DataTable dt = new DataTable();
            adp.Fill(tablo);
            Label1.Text = dt.Rows[0]["baslik"].ToString();
            Label2.Text = dt.Rows[0]["yazi"].ToString();

}

İşlem bu kadar, dikkat edilmesi gereken nokta Querystring dediğimiz yapı üzerinde. Başlıkları gösterdiğimiz ana.master sayfasında görsel kısmında ~/oku.aspx?giden= giden string i yakalayıp makaleoku sayfasında kod kısmında int.Parse(Request.QueryString[“giden”]); diyerek urlden gelen stringi yakalayıp makale id’sine göre veritabanından veriyi çekip göstermektek.