牛腩新闻发布系统——技术总结

            首先,后台代码是没有什么错误的,因为都是根据分层实现的,这里一直在锻炼当中,自然也就熟悉了。

接下来总结一下整体自认为学到的新知识。

        首页的制作和它与后台的整合中出现的一些实现较为费劲的地方。        

                          

1、制作母版页

        为了减少在网页设计时出现的变一页而懂全站的问题,我们使用了母版页,这样,就不必每个页面都去更新,修改一次,所有的网页都会改变,做到了一劳永逸。例如在牛腩新闻发布系统中前台页面画红线的地方。

        这样就不存在代码冗余,牵一发而动全身的现象了。

                  

2、表格

(1)Repeater:不会生成多余的代码

          在项模板中直接写上需要重复的语句,界面控件绑定D层查询到的DataTable里的数据。

<span style="font-size:14px;"> <asp:Repeater ID="repCategory" runat="server">
      <ItemTemplate >  <%--项模板-- %>
            <li><a href ='list.aspx?caid=<%# Eval("id") %>'><%# Eval("name") %></a></li>
      </ItemTemplate>
 </asp:Repeater>   </span>

(2)GridView:这是一个功能最强大的table控件,但是灵活性最差,会生成很多的多余代码。

             这是绑定热点新闻使用的GridView控件

<span style="font-size:18px;"> </span><span style="font-size:14px;"><!--热点新闻-->
        <div id="hotnews" class ="commonfrm">
            <h4 >热点新闻</h4>
            <asp:GridView ID="gvHotNews" runat="server" AutoGenerateColumns ="False" BorderWidth ="0" GridLines="None" >
                <Columns>
                    <asp:TemplateField HeaderText="所属类别" HeaderStyle-CssClass ="th_category " >                        
                        <ItemTemplate>
                            <a class ="td_category " href ='list.aspx?caid=<%#Eval("caId") %>'>[<%# Eval("name") %>]</a>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="新闻标题">                        
                        <ItemTemplate>
                            <a href ='contentnews.aspx?newsid=<%#Eval ("id") %>'  target ="_blank" title ='<%# Eval("title") %>' ><%# StringTruncat(Eval("title").ToString(),18,"...") %></a>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="发布时间" HeaderStyle-CssClass ="th_time " ItemStyle-CssClass ="td_time ">                       
                        <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Bind("createtime") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns> 
            </asp:GridView></span>
   

扩展:

       GridView、DataList、Repeater控件使用

       GridView是很智能的,直接就提供了很多的表现方式,是三者中最复杂也是最占资源的一个,常用于列表数据处理的时候,但是最好是不要太大量的数据;

       Datalist:实现重复项显示的功能,里面的内容自定义程度高,有点类似于在SAP中写循环语句来实现自动生成数据列表,是线性的处理。直接输出;数据量很大的时候可以考虑用这个。

       Repeater:介于两者之间。

      其实,使用哪个控件要根据实际情况、数据量的大小、所占的内存而定,当然我们所做的程序要是内存小、功能强大的方向努力,所以在选择控件的时候要慎重。


3、.NET截取指定长度汉字超出部分以“...”代替

       这个是在新闻列表页的时候,当表格中新闻标题太长时,在一定的空间内是不可能完全显示的,但是又想着当鼠标移上去的时候可以全部显示出来,这样就用到了这个截取指定长度超出部分。然后鼠标移上去又全部显示。

       首先,截取指定长度汉字。

<span style="font-size:14px;">        /// <summary>
        /// 将指定字符串按指定长度进行剪切
        /// </summary>
        /// <param name="oldStr">需要截断的字符串</param>
        /// <param name="maxLength">字符串的最大长度</param>
        /// <param name="endWith">超过长度的后缀</param>
        /// <returns>如果超过长度,返回截断后的新字符串加上后缀,否则,返回原字符串</returns>
        public static string StringTruncat(string oldStr, int maxLength, string endWith)
        {
            if (string.IsNullOrEmpty(oldStr))  //原字符创不能为空
                return oldStr + endWith;
            if (maxLength < 1)
                throw new Exception("返回的字符串长度必须大于【0】");
            if (oldStr.Length > maxLength)
            {
                string strTmp = oldStr.Substring(0, maxLength);
                if (string.IsNullOrEmpty(endWith))
                    return strTmp;
                else
                    return strTmp + endWith;
            }
            return oldStr;
        }</span><span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;"> </span>

             

<a>标签中间是截取汉字的使用

<span style="font-size:14px;"><a href ='contentnews.aspx?newsid=<%#Eval("id") %>'  target ="_blank" ><%# StringTruncat(Eval("title").ToString(),18,"...") %></a></span>

              在<a>标签中的title属性设置鼠标移上去后,长度等于没有截取之前的新闻标题

<span style="font-size:14px;"><a href ='contentnews.aspx?newsid=<%#Eval("id") %>'  target ="_blank" title ='<%# Eval("title") %>' ><%# StringTruncat(Eval("title").ToString(),18,"...") %></a></span>

4、.NET中获取字符串的MD5码

      登录页面,需要输入密码,但是

 (1)导入命名空间

using System.Web.Security;  

 (2)获取MD5码

pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "MD5");

(3)同时需要写一个登录逻辑

这时就需要把获取到的MD5代码转换成我们熟知的密码

if ("niunan" == name && "E10ADC3949BA59ABBE56E057F20F883E" ==  pwd)
   {
       flag = true;
   }
return flag;

5、Bind和Eval的区别

       绑定表达式

<span style="font-size:14px;"><%# Eval("字段名") %> 
<%# Bind("字段名") %></span>
区别:

        1、Eval是只读数据,Bind是可更新的。

        2、当对此表达式操作时候,必须用Eval,如,<%# Eval("字段名").ToString().Trim() %>

        3、若GridView中绑定列里面,设置内容格式DataFormateString={0:d},则必须把属性HtmlCode设置为false,否则无法起作用。

        Eval  单向绑定:数据是只读的

        Bind:双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库。

     

6、有关Session

       Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。

       在Web中,Session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。

       当一个Session第一次被启用时,一个唯一额标识被存储于本地的cookie中。

       存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览Web应用程序是需要的其他信息。Session的作用就是它在Web服务器上保持用户的状态信息供任何时间从任何页访问。因为浏览器不需要存储任何这种信息,所以可以使用任何李兰器。

       这是我们可以通过取得Session里的值来判断登录条件。如:判断登录用户是否为niunan

<span style="font-size:14px;">if (Session["admin"] !=null && Session["admin"].ToString() == "niunan")
   {//管理员已登陆
        if (!Page .IsPostBack )
          {
          }
   }</span>

7、路径问题

      这是在做网页一直贯穿的问题,图片的加载就要涉及到路径问题。

(1)相对路径

当前所在目录:""
<span style="font-size:14px;"><img src="niunanlogo.jpg" />或
<img src="./niunanlogo.jpg" /></span>
      上一级目录:"../"
<span style="font-size:14px;"><img src="../images/niunanlogo.jpg" alt ="LOGO" class ="login_logo" /></span>
      上一级的上一级:"../../"
<span style="font-size:14px;"><img src="../../images/niunanlogo.jpg" alt ="LOGO" class ="login_logo" /></span>

(2)绝对路径

        绝对路径就是具体的磁盘位置等。例如:

E:\新闻发布系统\Web\Web\images\niunanlogo.jpg

                

8、一般处理程序生成验证码

        在一般处理程序中,先随机的生成几个符号作为验证码,然后再转换成网页图片形式显示出来。具体见牛老师博客。这个地方出现了一些小问题。随着验证码的验证成功,新闻发布系统也算告一段落了。具体在发布时出现的问题将继续记录下来……


       重新浏览了一次笔记,认为比较重要的,就罗列了出来,在整个新闻发布系统中,使用到的控件每个都是点到为止,用到了JavaScript也是提一笔,在以后的学习中应该会有深入讲解吧……






        


 

你可能感兴趣的:(牛腩新闻发布系统——技术总结)