主页后台源码及释义(index.aspx.cs)

亮术网 2020-08-19 本网原创

主页后台源码主要是实现数据绑定,即用 SQL 语句从数据库选出记录,然后绑定到控件上,代码实现比较简单。除数据绑定外,还有给控件赋值、字符串的连接方法以及控件的显示与隐藏。

 

一、主页后台源码涉及到的知识点

1、给服务器端控件(Literal)赋值;

2、数据绑定;

3、字符串的连接方法;

4、根据内容有无显示隐藏控件。

 

二、知识点分析

1、给服务器端控件(Literal)赋值

非列表型常用服务器端控件有 Literal、Label、HyperLink、Image、HiddenField、TextBox、Button,不用提交表单的页面常用前四个,用提交表单的常用后三个。

Literal 与 Label 都是向前台输出文本,区别在于 Literal 只输出文字不输出任何 Html 元素,而 Label 输出 Html 元素与文字,即用 <span>文字</span>;

HyperLink 是超链接,在前台输出 <a href="">文字</a>;

Image 是图片,在前台输出 <img src="" />;

后三个在提交表单的页再一一介绍。主页用 Literal 给主页标题、关键词和描述赋值,例如给主页标题赋值的前台代码为:

<title><asp:Literal ID="litTitle" runat="server" /></title>

 

后台代码为:

litTitle.Text = PublicStatic.webName + "_" + PublicStatic.keywords;

从赋值代码中可以看出,主页标题由“网站名称和关键词组成”,这样有利在搜索引擎中获得排名。名称(webName)和关键词(keywords)都是引用静态类(PublicStatic)中的变量,它们由该类从数据库中取出,具体实现可查看 PublicStatic 类。

 

2、数据绑定

实现过程:先从数据库或文件中取出记录,然后绑定到控件上。

由于主页打开速度越快越好,所以选用输出数据最少的 Repeater 控件来绑定数据,以绑定“公司新闻”为例如。

前台代码为:

<asp:Repeater ID="repNews" runat="server">
    <ItemTemplate>
      <li><a href="/news/<%# Eval("newsid") %>.htm" target="_blank"><%# EpWeb.privates.classes.PublicClass.ToString(Eval("newsname")).Length > 12 ? EpWeb.privates.classes.PublicClass.newstr(EpWeb.privates.classes.PublicClass.ToString(Eval("newsname")), 12) + "…" : EpWeb.privates.classes.PublicClass.ToString(Eval("newsname"))%></a>[<%# Eval("adddate","{0:yyyy-MM-dd}") %>]
      </li></ItemTemplate>
  </asp:Repeater>

 

后台代码:

//绑定新闻
  private void BindNews()
  {
    string strSQL = "Select top 11 newsid,newsname,adddate From news Order By adddate Desc";
    DataTable dt = SqlData.dataTable(strSQL);

  repNews.DataSource = dt.DefaultView;
    repNews.DataBind();
  }

后台代码把绑定的过程定义为一个方法,实现过程如下:

1)首先定义从数据库取数据的 SQL 语句,SQL 语句的意思是:从数据库的新闻表(news)取出按添加日期(adddate)排序的 11 条记录(top 11),选出字段为:newsid,newsname,adddate;

2)然后调用 SqlData 类的 dataTable 方法执行 SQL 语句,并把获取到的记录赋给 DataTable 变量 dt;类 SqlData 主要实现连接数据库和从数据库中取出记录,具体实现方法请看 SqlData 类;

3)把取出的数据绑定到控件 Repeater 上,用方法中的后面两句代码。

以上虽然只举了 Repeater 控件的绑定方法,其它控件的绑定方法也一样。

 

3、字符串的连接方法

把几个字符连起来赋给一个变量,通常有两种方法。

1)用加号 + 连接,代码如下:

string names = "李" + "和" +"友";

 

2)用 string.Format,以主页中的给关键词赋值为例,代码如下:

string meta = "<meta name=\"{0}\" content=\"{1}\" />";
  litKeywords.Text = string.Format(meta, "Keywords", PublicStatic.keywords);

变量 meta 中有 {0} 和 {1},它们是用来被字符串取代的编号,{0}将被 "Keywords" 取代,{1} 将被 PublicStatic.keywords 取代。

 

4、根据内容有无显示隐藏控件

Asp.net 控件的隐藏与显示用 Visible 属性;不设置 Visible,或设置为真,则显示控件;设置为假,则隐控件。主页中“友情链接”部分,要据是否添加了友情链接来决定是否显示该部分。

前台代码如下:

<asp:Panel ID="paLink" runat="server" CssClass="friendlink" Visibl="false">
    <h3 class="title border-b">友情链接:</h3>
    <ul class="friendlink_list">
      <asp:Repeater ID="repLink" runat="server"><ItemTemplate>
        <li><a href="<%# Eval("url") %>" target="_blank"><%# Eval("sitename") %></a></li></ItemTemplate></asp:Repeater></ul></asp:Panel>

代码中用了 Panel 控件,并把 Visible="false",即设置为隐藏。

 

后台代码如下:

//绑定友情链接
  private void BindLink()
  {
    string strSQL = "select sitename,url from friendlink";
    DataTable dt = SqlData.dataTable(strSQL);

  if (dt.Rows.Count > 0)
    {
      repLink.DataSource = dt;
      repLink.DataBind();
      paLink.Visible = true;
    }
  }

如果从数据库中能选择出“友情链接”记录(即 if (dt.Rows.Count > 0)),则显示 Panel 控件(即 paLink.Visible = true)。

 

三、完整源码


using System;
using System.Web;
using System.Web.UI.WebControls;
using System.Data;
using EpWeb.privates.classes;

namespace EpWeb
{
  public partial class index : System.Web.UI.Page
  {
      protected void Page_Load(object sender, EventArgs e)
      {
          SetWebHeader();
          BindNews();
          BindProduct();
          BindClass();
          BindLink();
      }

      private void SetWebHeader()
      {
          litTitle.Text = PublicStatic.webName + "_" + PublicStatic.keywords;
          string meta = "<meta name=\"{0}\" content=\"{1}\" />";

          litKeywords.Text = string.Format(meta, "Keywords", PublicStatic.keywords);
          litDescription.Text = string.Format(meta, "Description", PublicStatic.description);
      }

      //绑定产品
      private void BindProduct()
      {
          //绑定最新供应
          string strSQL = "Select top 6 id,pname,psize,price1,pic,pic1 From product Where newProduct = 1 and firstFlag = 1 Order By adddate Desc,id Desc";
          DataTable dt = SqlData.dataTable(strSQL);
          repNewProduct.DataSource = dt.DefaultView;
          repNewProduct.DataBind();

          //绑定推荐产品
          strSQL = "Select top 7 id,pname,psize,price1,pic,pic1 From product Where recommend = 1 and firstFlag = 1 Order By adddate Desc,id Desc";
          dt = SqlData.dataTable(strSQL);
          repRecommend.DataSource = dt.DefaultView;
          repRecommend.DataBind();

          //绑定产品
          strSQL = "Select top 8 id,pname,psize,price1,pic,pic1 From product Where recommend = 0 and firstFlag = 1 Order By adddate Desc,id Desc";
          dt = SqlData.dataTable(strSQL);
          repProduct.DataSource = dt.DefaultView;
          repProduct.DataBind();
      }

      //绑定分类
      private void BindClass()
      {
          string strSQL = "Select Top 14 categoryid,category From category order by categoryorder";
          DataTable dt = SqlData.dataTable(strSQL);
          repClass.DataSource = new DataView(dt);
          repClass.DataBind();
      }

      //绑定新闻
      private void BindNews()
      {
          string strSQL = "Select top 11 newsid,newsname,adddate From news Order By adddate Desc";
          DataTable dt = SqlData.dataTable(strSQL);
          repNews.DataSource = dt.DefaultView;
          repNews.DataBind();
      }

      //绑定友情链接
      private void BindLink()
      {
          string strSQL = "select sitename,url from friendlink";
          DataTable dt = SqlData.dataTable(strSQL);

          if (dt.Rows.Count > 0)
          {
              repLink.DataSource = dt;
              repLink.DataBind();
              paLink.Visible = true;
          }
      }
  }
}

前台:主页前台Html页面设计及释义