博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
14.示例解析
阅读量:6831 次
发布时间:2019-06-26

本文共 16417 字,大约阅读时间需要 54 分钟。

做一个相对完整的示例,用来显示公司的招聘、新闻、产品介绍等功能。

1.先在工程中建立完整的文件夹,(Admin为后台管理用文件夹,App_Data是数据库文件夹、BLL为业务逻辑文件夹、css为样式文件夹、DAL为数据操作类文件夹,放置强类型数据集、ErrorPages为错误页文件夹、imgs为图片文件夹、js为调用js,jQuery,CKEditor等的文件夹、Library为要用到的库文件夹、master为母版文件夹、upload为上传文件的文件夹、UserControl为用户自定义控件的文件夹),如下截图:

2.建立数据表,T_News(新闻). T_Products(产品表), T_ProductsCategory(产品类别表)

3.建立强类型集,新闻中有以下几个方法(分页和显示用):

  

4.先建立普通的HTML框架页面,即用div等元素先划分出导航、头部、中间等的框架,用css来控件显示的位置,然后再建立母版页,并把框架页面中的主要部分放到母版页form中即可,以下为母版页的html

 

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SetFront.master.cs" Inherits="企业网站.master.SetFront" %>        


5.css文件内容

 

body {}.clear{    clear:both;}#main{    width:950px;    margin-left:auto;    margin-right:auto;}#navigate{    list-style-type:none;}#navigate li{    float:left;    margin:3px,3px,3px,3px;}#navigate .active{    background-color:Red;}.validator{   color:Red;}.more{    float:right;}.ulwidth{    width:200px;}.ckeditor{}.ProductFloat{    float:left;}

6.建立首页(带有母版,不是普通的aspx),在显示的地方放上objectdatasource及listview等元素

<%@ Page Title="" EnableViewState="false" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="企业网站._default" %><%@ OutputCache Duration="10" VaryByParam="none" %>

“更多”的功能是另起一页,把所有的新闻分页显示出来如下图,用到了分页功能,是高效分页的那种。

html:

 

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/master/SetFront.Master"  CodeBehind="morenews.aspx.cs" Inherits="企业网站.morenews" %>
没有新闻。
  • <%#Eval("Title") %>

    7.具体查看某个id的新闻,我们可以用Literal元素来显示,因为它在客户端什么也不会渲染出来

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewNews.aspx.cs" Inherits="企业网站.ViewNews" %>


    8.分类显示处理

       如果公司产器分类太多,要在页面上显示的时候会产生大量的html代码并且看着很乱,可以建立用户控件页面,在上面放一个Repeater或listView即可,用代码绑定它的数据源即可

       html:

       

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControlProducts.ascx.cs" Inherits="企业网站.UserControl.UserControlProducts" %>
    1. <%#Eval("Name") %>

    cs:

     

    public partial class UserControlProducts : System.Web.UI.UserControl    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                var data = new T_ProductsTableAdapter().GetDataByCategoryId(CategoryId);                RepeaterPut.DataSource = data;                RepeaterPut.DataBind();            }        }        public int CategoryId        {            get;            set;        }    }

    这样我们可以把这个做好的UserControlProducts.ascx拖动到ViewProducts.aspx,用示展示产品,有几个分类就拖动几个用户控件到此页面上

    Html:

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewProducts.aspx.cs" Inherits="企业网站.ViewProducts" %><%@ Register src="UserControl/UserControlProducts.ascx" tagname="UserControlProducts" tagprefix="uc1" %>

    医疗器械

    电动车

    火炉

     在用户控件页面设定了CategoryId来根据产品分类,因此,可以在产品页面中分别设定用户控件所对应的CategoryId值,如此例中医疗器械为1,电动车为2,火炉为3.这些是数据库都已设置好的。

    9. 显示每个产品页面

      

     html:

      

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewProductDetail.aspx.cs" Inherits="企业网站.ViewProductDetail" %>
    名称:
    类别:
    图片:
    描述:
    返回

    9.管理页面

        1).新闻页分布显示ListNews.aspx

         

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListNews.aspx.cs" Inherits="企业网站.Admin.ListNews" %>        
    发布新闻
     
    未返回数据。
    编辑
    Title CreateDate

         2).新增修改产品页EditNews.aspx

           

    <%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false"  CodeBehind="EditNews.aspx.cs" Inherits="企业网站.Admin.editNews" %>               
    标题
    *
    内容
    *
    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using 企业网站.DAL.DataSetNewsTableAdapters;namespace 企业网站.Admin{    public partial class editNews : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                string action = Request["action"];                if (action == "edit")                {                    int id = Convert.ToInt32(Request["id"]);                    var rowdata = new T_NewsTableAdapter().GetDataById(id).Single();                    txtTitle.Text = rowdata.Title;                    txtBody.Text = rowdata.Body;                }                else if (action == "addnew")                {                }                else                {                    throw new Exception("action错误:" + action);                }            }        }        protected void btnSave_Click(object sender, EventArgs e)        {            if (!IsValid)                return;            string action = Request["action"];            if (action == "edit")            {                int id = Convert.ToInt32(Request["id"]);                T_NewsTableAdapter adapter = new T_NewsTableAdapter();                var rowdata = adapter.GetDataById(id).Single();                rowdata.Title = txtTitle.Text;                rowdata.Body = txtBody.Text;                adapter.Update(rowdata);            }            else if (action == "addnew")            {                new T_NewsTableAdapter().Insert(txtTitle.Text, txtBody.Text, DateTime.Now);            }            else            {                throw new Exception("action错误:" + action);            }            Response.Redirect("~/Admin/ListNews.aspx");        }    }}

        3)产品浏览ListProduct.aspx

          

     

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ListProduct.aspx.cs" Inherits="企业网站.Admin.ListProduct" %>
    新增产品
    未返回数据。
    编辑
    名称 类别 图片

        4).EditProduct.aspx(单个产品处理),在修改图片时我们用到了<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Bind("PicPath") %>' />,这个元素是在用户修改用户其它信息而不是图片时,用它来保存原来信息的值,把它做成参数提交给sql语句中的<asp:Parameter Name="PicPath" Type="String" />参数,否则更新后图片会丢失

        

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="EditProduct.aspx.cs" Inherits="企业网站.Admin.EditProduct" %>
    Id:
    Name:
    CategoryId:
    PicPath:
    没有图片
    Description:
     
    Name:
    CategoryId:
    PicPath:
    没有图片
    Description:
     

    cs源码:

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;namespace 企业网站.Admin{    public partial class EditProduct : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                string action=Request["action"];                if (action == "addnew")                    FormView1.ChangeMode(FormViewMode.Insert);                else if (action == "edit")                    FormView1.ChangeMode(FormViewMode.Edit);                else                    throw new Exception("错误的action:" + action);            }                   }        protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)        {            Response.Redirect("ListProduct.aspx");        }        protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)        {            Response.Redirect("ListProduct.aspx");        }        protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)        {            FileUpload fu = (FileUpload)FormView1.FindControl("FileUpload1");            if (fu.HasFile)            {                string fileext = Path.GetExtension(fu.FileName);                if ((fileext == ".jpg") || (fileext == ".jpeg") || (fileext == ".png") || (fileext == ".bmp"))                {                    fu.SaveAs(Server.MapPath("~/upload/images/"+ fu.FileName));                                       e.Values["PicPath"] = fu.FileName;                }                else                {                    e.Cancel = true;                    ClientScript.RegisterStartupScript(GetType(), "错误", "alert('文件格式不正确.');", true);                }            }        }        protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)        {            FileUpload fu = (FileUpload)FormView1.FindControl("FileUpload1");            if (fu.HasFile)            {                string fileext = Path.GetExtension(fu.FileName);                if ((fileext == ".jpg") || (fileext == ".jpeg") || (fileext == ".png") || (fileext == ".bmp"))                {                    fu.SaveAs(Server.MapPath("~/upload/images/" + fu.FileName));                                       e.NewValues["PicPath"] = fu.FileName;                }                else                {                    e.Cancel = true;                    ClientScript.RegisterStartupScript(GetType(), "错误", "alert('文件格式不正确.');", true);                }            }        }        protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)        {            if (e.CommandName == "Cancel")                Response.Redirect("ListProduct.aspx");        }    }}

    10.错误页面处理

       1).打开webconfig页面,设定当网站出错时,会自动 到错误页的设置,在customErrors 中mode有on,off,remoteonly三种,on表示在网站的服务器上也可以看到出错的页面,off表示关闭错误网页的显示,这样会显示网站的具体出错信息,一般用remoteonly就可以,让远端用户可以看到出错的页面,而在本地可以看到具体出错信息。defaultRedirect表示出错后默认转到的出错页,如果是网页找不到,则我们可以用statuscode来决定转到哪个业面。

      

     出错默认页面,defaultErr.aspx的html

       

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="defaultErr.aspx.cs" Inherits="企业网站.ErrorPages.defaultErr" %>        
    出错啦!
    返回首页

    当调用出错的默认页面时,可以把出错的详细 信息写在具体的文件中,如本例中ErrorRecords.txt。如果要把出错信息写到文件中则需要更改webconfig中customErrors的redirectMode=ResponseRewrite才行.这样当错误面弹出时就会把详细信息写到文本中。

    以下为cs:

     

    protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {              Exception ex=  HttpContext.Current.Server.GetLastError();              File.AppendAllText(Server.MapPath("~/ErrorRecords.txt"), ex.StackTrace);            }        }

     

    找不到文件的页面:

          对不起,你找的资源丢失了.  返回首页

     

    11.测试错误页,建立一错误页面ErrorTest.aspx,它的load事件中写入如下语句进行测试即可。

    protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                SqlConnection conn = new SqlConnection("IP:127.0.0.1&db=tt");                conn.Open();            }        }

    12.其它和功能基本都一样,以下为运行截图

     

         

     

    转载于:https://www.cnblogs.com/yagzh2000/p/3171302.html

    你可能感兴趣的文章
    我的友情链接
    查看>>
    Ubuntu安装Cairo-Dock后,不能使用注销按钮和关机按钮
    查看>>
    SQL实现多行合并一行
    查看>>
    日记_
    查看>>
    SQL Server 2012 AlwaysOn Group 使用 Identity字段注意事项
    查看>>
    tcc新的插装引擎对比原有实现的改进
    查看>>
    20145328 《信息安全系统设计基础》第3周学习总结
    查看>>
    layoutSubviews何时调用的问题
    查看>>
    编译bash实现history的syslog日志记录
    查看>>
    Java数据类型
    查看>>
    mysql主从备份
    查看>>
    我的友情链接
    查看>>
    强化学习概览
    查看>>
    Oracle启动出现ORA-27125错误
    查看>>
    读书笔记之委托与事件(下)
    查看>>
    我的友情链接
    查看>>
    Linux grep 查找字符串 前后几行
    查看>>
    P3402 最长公共子序列(nlogn)
    查看>>
    我的友情链接
    查看>>
    Android基础(六) – Service属性及常用方法
    查看>>