none
文章的内容页面应该如何实现? RRS feed

  • 问题

  • using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Web;
    
    using System.Web.UI;
    
    using System.Web.UI.WebControls;
    
    using System.Data.SqlClient;
    
    using System.Data;
    
    
    
    public partial class Show : System.Web.UI.Page
    
    {
    
        protected void Page_Load(object sender, EventArgs e)
    
        {
    
            if (!String.IsNullOrEmpty(Request.QueryString["id"]))//如果传来的id不为空
    
            {
    
                int ReplyId = Int32.Parse(Request.QueryString["id"]);
    
    
    
                string sql = "SELECT * FROM content WHERE id = " + ReplyId + "";
    
                SqlCommand cmd = new SqlCommand();
    
    
    
                SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction,
    
                    CommandType.Text, sql, null);
    
                if (reader.HasRows)//判断reader中是否有数据。
    
                {
    
                    while (reader.Read())
    
                    {
    
                        Show_Id.InnerHtml = reader[0].ToString();
    
                        Show_Title.InnerHtml = reader[2].ToString();
    
                        Show_Content.InnerHtml = reader[3].ToString();
    
                        Show_Add_date.InnerHtml = reader[4].ToString();
    
                    }
    
                }
    
                else
    
                {
    
                    //没有数据执行以下代码。
    
    
    
                    Show_Title.InnerHtml = "暂无内容!";
    
    
    
                }
    
            }
    
        }
    
    }
    
    
    
    
    以上我是我写的,功能到是实现了。可是感觉不是很好:
    1、就读一条信息还要用while (reader.Read())循环吗?有没有更高效率的呢?
    2、我是通过Show_Id.InnerHtml给aspx页面中div传数据的,不知道大家都是怎么传如“文章标题”、“内容”、“添加时间”等信息呢?尤其是“内容”,因为要支持HTML代码还要安全。

    请哪位给指点指点呀。先谢谢了。
    • 已编辑 hkstb 2009年12月21日 9:47 写错了。
    2009年12月21日 9:46

答案

  • 你好!

    你的这个界面是用于显示一篇文章,GridView 并不适合你。用你目前的方式就可以,DataReader 也是高效的一种方式,还想再高效一些可以考虑缓存(页面缓存,缓存API)或静态页面了。

    另外你的代码也有问题,使用 DataReader 后需要显示的调用  DataReader.Close(),最好使用 using 如下代码:

    using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction,
        CommandType.Text, sql, null))
    {
        if (reader.HasRows)//判断reader中是否有数据。
        {
            while (reader.Read())
            {
                Show_Id.InnerHtml = reader[0].ToString();
                Show_Title.InnerHtml = reader[2].ToString();
                Show_Content.InnerHtml = reader[3].ToString();
                Show_Add_date.InnerHtml = reader[4].ToString();
            }
        }
    
        else
        {
            Show_Title.InnerHtml = "暂无内容!";
        }
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 hkstb 2009年12月22日 8:37
    2009年12月22日 1:14
    版主

全部回复

  • 直接用gridview绑定显示多好
    努力+方法=成功
    2009年12月21日 9:48
  • 回复真快呀。佩服。

    用控件好吗?感觉老是多佘代码太多了,影响效率

    2009年12月21日 9:49
  • 用gridview控件显示方便,
    对一般的项目来说对效率影响不大,要不微软开发它干吗?
    努力+方法=成功
    2009年12月21日 9:54
  • gridview对于一般的项目确实方便好用。可是对于网站就不好说了。有的网站访问量小没有问题,可是稍微大点的网站就显示出来了。现在中国上网的人越来越多,真不好说哪个网站访问量高于低。

    今天发这个话题,一是想自己学习学习,看有没有更高效率和更为安全的解决方案。二是想让其它人多几种选择。

    大家有什么想方尽管说出来,不要手懒哦。呵呵~~
    2009年12月21日 10:05
  • 你自己想写啊 那可以 有难度的 你必须控制html布局 用个循环 连加字符串完后输出
    2009年12月21日 10:17
  • 有没有代码呀?贴出来让大家学习学习啊。
    2009年12月21日 11:03
  • 有没有代码呀?贴出来让大家学习学习啊。

    暂时没有的 因为我手上现在没vs工具   
    和你写的差不多 用字符串写html结构布局 用循环写列表布局 结束再加个字符串html元素结束 
    2009年12月21日 12:24
  • 哦,那我就先不结帖了,看看这一两天有没有那位给贴出代码来让大家学习学习。
    2009年12月21日 14:20
  • 你好!

    你的这个界面是用于显示一篇文章,GridView 并不适合你。用你目前的方式就可以,DataReader 也是高效的一种方式,还想再高效一些可以考虑缓存(页面缓存,缓存API)或静态页面了。

    另外你的代码也有问题,使用 DataReader 后需要显示的调用  DataReader.Close(),最好使用 using 如下代码:

    using (SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction,
        CommandType.Text, sql, null))
    {
        if (reader.HasRows)//判断reader中是否有数据。
        {
            while (reader.Read())
            {
                Show_Id.InnerHtml = reader[0].ToString();
                Show_Title.InnerHtml = reader[2].ToString();
                Show_Content.InnerHtml = reader[3].ToString();
                Show_Add_date.InnerHtml = reader[4].ToString();
            }
        }
    
        else
        {
            Show_Title.InnerHtml = "暂无内容!";
        }
    }


    知识改变命运,奋斗成就人生!
    • 已标记为答案 hkstb 2009年12月22日 8:37
    2009年12月22日 1:14
    版主
  • 多谢 X.X.Y版主 的指点。确实 尽量迟的打开连接,尽量早的关闭连接。是提高效率和安全的准则。像这种没有关闭连接,更不应该,是我疏忽了。
    2009年12月22日 8:37