牛腩新闻发布系统学习

    牛腩新闻发布系统视频,这个视频,其实就是一个视频,然后它一步一步的教我们做一个B/S(Browser/Sever,浏览器/服务器)的系统.跟着视频,弄出了系统,大概了解了下B/S系统的开发流程,以及一些比较常用控件的使用,还有学习了一些重要的代码,属性的作用,以及了解了错误的调试和处理,并简单的学习了下CSS(CascadingStyleSheet,级联样式表)的知识,CSS和HTML代码完全分离,可控制网页的样式和布局.

    牛腩新闻发布系统的流程就是,首先对整个系统的制作,做了设计,画了用例图,介绍了该系统的主要角色和功能,然后根据系统中的对象的属性,完成数据库的编写,对于字段createTime,使用的是默认值getdate()获取当前时间.然后用flash工具设计了界面,画了系统的页面以及页面上显示的内容;还有设计前后台的界面.

    接着就是代码的编写,在VS上新建了一个网站,采用的三层的模式进行编写.从SqlHelper开始编写.简单的编写后,为了验证编写是否可用,直接编写简单的界面进行操作,对结果进行了验证.然后介绍下,后期重构SqlHelper的时候,使用了如下的语句,使用完自动释放using中的对象.
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) 
{ 
    dt.Load(sdr); //此处用到sdr对象 
}  //此处释放sdr对象,并关闭connection对象连接 
    接着是对实体层的编写,根据数据库的字段,对实体层进行编写,并给每个实体层构造了有参或无参的构造函数.这个编写可用工具生成,我是用了动软直接将数据库的字段进行了实体层代码的生成,不过还是改了一部分.所以有时候觉得,如果数据库小的话,还不如手写快!

    接着是对D层代码编写,D层代码很简单和C/S的是一样的.主要就是,在那些个方法中编写Sql语句或者存储过程,然后是设置参数集合,然后执行sqlhelper的某个方法.由于数据库是有设计主外键的,所以删除是件比较麻烦的事情.以前我都是不删除数据,只用一个字段,表示数据是否存在.不过如果数据太多,而且无用,确实有必要删除,使用触发器是不错的,但是据说触发器不好控制,万一一不小心出点问题,连问题出在哪都不知道,因为没法调试;所以我个人还是不喜欢用触发器(其实是不怎么会用),宁可多写几条语句,或者使用事务什么的!创建触发器,SQL Server Management会有模板,很方便.
ALTER TRIGGER [dbo].[trigCategoryDelete]
   ON  [dbo].[category]
   instead of DELETE
AS 
BEGIN
	--select * from news 
	declare @caId int 
	
	select @caId=id from deleted
	--删除评论
	delete comment where [newsId] in (select id from news where caId=@caId )
	--删除新闻
	delete news where caId=@caId
	--删除类别
	delete category where id=@caId	
END
    还有存储过程,其实和Sql语句差不多.使用了存储过程,以前传Sql语句,现在传存储过程名,其他基本一样.有一点不方便的是,参数集合的设置,以前对着Sql语句写就好了,这个还需要对着存储过程,根据它需要的参数来写.如果忘了存储过程需要的参数,还需要打开数据库进行参看.
    
    然后就是对B层进行编写,牛腩将B层架空了,全是return,有跟没有一样,这点不行,做的不好.

   这样前期的准备工作就完成,接下来的就是Web界面的开发了.对于界面样式的设计,需要使用CSS.CSS是一种样式设计语言,它的特点是能够真正做到网页表现与内容分离.可以对网页中的对象的位置排版进行非常精确的控制,而且几乎支持所有的字体字号样式,而且易读性还好。
   CSS的比较常用的是,几种选择器.根据优先级排,ID选择器>类选择器>HTML标签选择器.对于id,前面加"#",对于类,前面加".";对于属性,前面啥也不加.
   举个例子,比如
   在HTML代码中是这样的,需要给这句话,设置样式:字体为红色,大小为16px;
<p id="setcolor" class="setfont">
    这个段落是红色,字体是16px大小的。
</p>
   那么,CSS文本中就可以这么写:
body
{
    color:black; /* 默认字体颜色为黑色 */
    font:14px;   /* 默认字体大小为14px */
}
#setcolor
{
    color:red;   /* 修改字体颜色为红色 */  
}
.setfont
{
    color:blue; 
    font:16px;  /* 修改字体大小为16px */
}
    由于优先级的原因,字体的颜色为红色,16px;
    然后CSS的核心内容是:标准流,盒子模型,浮动,定位.这个我也说不大清楚,就不说了!对于标准流,我就知道float(浮动)会脱离标准流;盒子模型,就知道外边距(margin,),内边距(padding),宽(width),高(height).图是这个样子的

 
   Web页面设计的框架完成之后,就需要和数据库联系起来,获取正确的数据.而不是自己写好的固定的数据;数据是在表格中显示的,也就是table中的tr;拉出工具箱中的数据下的Repeater或者GridView.然后如果是在这个Repeater控件的下,则编写代码;<ItemTemplate></ItemTemplate>;
HTML代码如下:


页面代码如下:
牛腩新闻发布系统学习_第1张图片
    如果是GridView,则HTML代码如下,里面的代码可以不用手写,在设计界面上编辑列,去掉自动生成字段,BoundField,添加,修改属性;

然后,出来的代码就是这个样子,不需要手动输入代码!

    页面代码如下:


部分技巧/知识介绍,木有先后顺序,先想到先写:
    1.//TODO,定义未完成的位置,方便在大系统中,查找自己还未完成的代码,继续进行编写.使用视图--任务列表查看;
    2.VS2010,Ctrl+E+D,整理代码;
    3.常用代码,拖到工具箱中,变成自定义代码;
    4.display:block;建立块;
    5.<a href=""></a>链接标签里的属性,target="_blank",表示在新的页面打开链接;
    6.特殊字符的输入,实体引用&copy,表示版权符号;&amp,表示&(和号);
    7.页面的调试工具,火狐的叫firebug,安装了就能用了.其他浏览器,按F12好像都有!

    8.制作母版页,新建一个母版页项,写代码;然后创建新的Web窗体项,选择母版页,即可,新创建的页面和母版页的界面是一样的;母版还可以嵌套母版; 

    9.圆角框,保存带圆角框的网页;删除圆角框的内容,只保留圆角框.截图,保存;使用photoshop,裁图;需要头部,中间一条线,和尾部;或者左上(一大片),左下,右上,右下,中间1条线;设置好background-image:url(""),background-position:bottom/center/top/right等等,background-repeat:no-repeat/repeat-y/repeat-x.
  
    10.页面倒计时的制作:使用script的setInterval作为计时器,clearInterval()防止倒计时到0了还继续走,window.location.href="",跳转页面;document.getElemnetById("mes").innerHTML=i;则id为mes的值会在页面上变化,跟i一样,从5到0,倒计时;
  牛腩新闻发布系统学习_第2张图片
   这个是mes:
   11. .NET截取指定长度汉字超出部分以"..."代替: http://blog.csdn.net/xiaoduishenghuogo/article/details/7647511  
   12. ,~当前的根目录;
   13.编码和解码:Server.UrlEncode(),Server.UrlDecode();
   14.Request.QueryString[""];
   15.删除.以删除用户评论为例.使用LinkButton,HTML编写类似如下代码:
<asp:LinkButton ID="lbtnDelComment" OnClientClick="return confirm('是否真的删除该评论?')" OnClick="lbtnDelComment_Click"  CommandArgument='<%# Eval("id") %>' runat="server" Visible="false">删除</asp:LinkButton>
   界面代码如下所示:
 //删除按钮
    protected void lbtnDelComment_Click(object sender, EventArgs e)
    {
        //当前点击的按钮
        LinkButton lb = (LinkButton)sender;
        //获取传过来的CommonId
        string comId = lb.CommandArgument;

        //删除该评论
        bool b=new CommentManager().Delete(comId);
        if (b)
        {
            //如果删除成功
            //重新绑定新闻
            string newsid = Request.QueryString["newsid"];

            DataTable dt = new CommentManager().SelectByNewsId(newsid);
            if (dt.Rows.Count == 0)
            {
                //无新闻评论
                emptydata.Visible = true;
                repComment.DataSource = dt;
                repComment.DataBind();
            }
            else
            {
                //有新闻评论
                emptydata.Visible = false;
                repComment.DataSource = dt;
                repComment.DataBind();
            }
        }
        else
        {
             //如果删除失败
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('删除评论失败,请联系管理员!');</script>");
        }
   
    }
    16.验证码生成, http://niunan.iteye.com/blog/252335.
    17.弹出提示:控件RequireFieldValidator 和ValidationSummary,配合使用!注意ValidationGroup属性和ControlToValidate属性;Validator(验证程序,验证器)
    18.使用Jquery,注意使用手册!可以实现点击页面,文字变文本,直接修改的功能;和CSS的使用很像! $
    19.FreeTextBox,在线编辑器!更改语言language.xml,中文zh-CN;ValidateRequest="false"
    20.错误页,web.xml中<customErrors mode="On" Moderedirect="URL"></customErrors>
    21.发布出了点问题,路径的问题.1.IISManager,先新建网站,建完之后,在网站上右击添加虚拟目录.不过要先修改要用的应用程序池的版本为对应版本;2.添加虚拟目录,目录名为web(根路径,因为根路径名叫这个).3.将虚拟目录转为应用程序;右击web,点击浏览,没问题!
    22.分页.控件:AspNetPager, http://www.webdiyer.com/  在线演示: http://www.webdiyer.com/AspNetPagerDemo/default.aspx  应用自定义样式 http://www.webdiyer.com/AspNetPagerDemo/ApplyStyles/default.aspx
        数据库:分页,用到了ROW_NUMBER(). http://niunan.iteye.com/blog/264197     http://blog.sina.com.cn/s/blog_931b09030101c2e8.html
     GridView:AllowPaging改为True,在GridView1_PageIndexChanging事件中,GridView1.PageIndex=e.NewPageIndex;然后绑定数据;
    23.注释不用#region折叠,而是将注释从summary中拖出来,拖到第一个<summary>的后面,这样折叠的时候,就能又看到返回值又可以看到注释;       
        /// <summary>取出最新10条新闻(所属分类,新闻标题,发布时间)
        ///  取出最新10条新闻(所属分类,新闻标题,发布时间)
        /// </summary>
    24.AJAX,工具箱-->AJAX Extensions-->UpdatePanel,可以做到不用提交整个页面,只提交需要提交的部分!
    25.重新生成解决方法!
    26.MaintainScrollPositionOnPostback="true"  在页面最上面设置,提交表单后保持滚动条的位置不变!但好像不是所有浏览器都有用!Postback,PRADO编程术语,一个form的提交称之为postback!
    27.由于有些页面需要参数,所以直接浏览的时候,会出问题;那么作为参数caid,先判断是否为空或者是否不能转换为数字(caid是类别ID,所以是int类型),只要有一个成立,则跳转到一个默认页面(首页)!
if (string.IsNullOrEmpty(caid) || !int.TryParse(caid,out x))
            {
                Response.Redirect("default.aspx");
            }

    以上:应该差不多将牛腩中的知识都有囊括!这个博客,其实主要是给我自己看的,是为了以后,我看完这篇文章,就能很快的了解牛腩中的知识.或者以后遇到问题,看看能否从中找到解决方法!或者看到某点,想到某些!有些记流水账的样子,个人感觉,前面写的还好,到后面,写着写着就觉得太多了,不像总结,像在罗列,所以,后面就罗列到底了~

你可能感兴趣的:(牛腩新闻发布系统学习)