现在的位置: 首页 > 综合 > 正文

程序人生系列之新闻发布系统 44-62

2012年11月29日 ⁄ 综合 ⁄ 共 5298字 ⁄ 字号 评论关闭

1. MD5 加密 

  前提:引入命名空间  using System.Web.Security; 

  pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "MD5");  这句话就将 pwd 按MD5加密方式加密 了 

在登陆页判断用户是否存在(或者是否是管理员)的方法应该放在 业务逻辑层 里 LoginManager.aspx

          /// <summary>

         /// 判断用户是否登录

         /// </summary>

         /// <param name="name">用户名</param>

          /// <param name="pwd">密码</param>

          /// <returns></returns>

          public static bool Login(string name, string pwd)

         {

             bool flag = false;

             if ("yinger" == name && "BE0D1B3A3AED7789407A83C3D68E962E" == pwd)

             {

                 flag = true;

             }

             return flag;

         }

2. 管理页的安全性

          每次管理页面加载时,都要判断 session 中的对象是否是管理员

          if (Session["admin"] != null && Session["admin"].ToString() == "yinger")

         {                                                                         

                    //已登录

             if (!Page.IsPostBack)

             {

                  repCategory.DataSource = new CategoryManager().SelectAll();

                 repCategory.DataBind();           

              }

         }

         else

         {

                  //未登录

             Response.Redirect("login.aspx");

         }

3. 不刷新的页面提示

  Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('请输入类别名称');</script>");

当前页面的 客户端脚本 ,显示一个信息 message

4. ValidationGroup 这是验证过程中很重要的一步

* ValidationGroup属性:

同时设置验证控件的ValidationGroup=”g1”与触发验证的控件的ValidationGroup=”g1”。例如当单击按钮时,只有验证控件的ValidationGroup属性值与该按钮的ValidationGroup属性值相同的验证控件会被触发。

*

  例如:添加新闻类别

        <div class="con">

             请输入类别名称:<asp:TextBox ID="txtCaname" runat="server" Validati></asp:TextBox>

              <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Validati C runat="server" ErrorMessage="请输入类别名字!" Text="*"></asp:RequiredFieldValidator>

              <asp:Button ID="btnAdd" Validati UseSubmitBehavior="false" runat="server" Text="添加类别"

                  />

             <asp:ValidationSummary ID="ValidationSummary1" Validati ShowMessageBox="true" ShowSummary="false" runat="server" />

         </div>

5. JQuery : javascript 框架

jquery 就是 用 javascript 写出来的各种常用的方法,然后封装起来,叫做 jquery !

就好像 我们用 C# 写的各种类文件(包含各种方法),然后封装起来(.dll),被其他文件引用 !

可编辑的表格    javascript 编写,注意还要实现 异步实现 更新数据库

源码:

$(function () {

     $(".caName").click(function () {

         var objTd = $(this); //就是指caName这个单元格

         var oldText = $.trim(objTd.text());

         var input = $("<input type='text' value='" + oldText + "' />"); //注意 $(),将当前单元格变成文本框

         $(this).html(input); //当前的文本框为以前的类别名称

         //设置文本框的点击事件失效

        input.click(function () {

             return false;

         });

         //设置文本框的样式

         input.css("border-width", 0);

         input.height($(this).height()); //文本框的高度就是单元格的高度

         input.width($(this).width()); //文本框的宽度就是单元格的宽度

         input.css("text-align", "center");

         input.css("font-size", "14px");

         input.trigger("focus").trigger("select"); //全选 为了兼容Opera,必须先触发focus事件

         //文本框失去焦点时重新变为文本

         input.blur(function () {

             var input_blur = $(this);

             var newText = $.trim($(this).val()); //修改后的类别名称

             //当新旧文本内容不相同时才进行数据的提交

             if (oldText != newText) {

                 //获取当前单元格的新闻类别的ID

                 var caid = $.trim(objTd.prev().text());

                 //AJAX异步更新数据库 为了避免中文问题,可以对网址中的中文进行编码

                var url = "../handler/ChangeCategoryName.ashx?caName=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();

                 //提交 通过远程 HTTP GET 请求载入信息

                $.get(url, function (data) {

                     if (data == "false") {

                         alert("类别修改失败!请检查是否已经存在了!");

                         input_blur.trigger("focus").trigger("select");

                     }

                     else {

                         objTd.html(newText);

                     }

                 });

             }

             else {

                 objTd.html(newText);

             }

         });

     });

});

6. 类别管理页的键盘操作忽略!没有看过

7. DropDownList 使用

       绑定新闻类别 

  DataTable dt = new CategoryManager().SelectAll();

  ddlCategory.DataSource = dt;

  ddlCategory.DataTextField = "name";   

  ddlCategory.DataValueField = "id";       

  ddlCategory.DataBind();

      添加新闻时 要获取 类别的 id 

     protected void btnAdd_Click(object sender, EventArgs e)

     {

         string title = txtTitle.Text.Trim();

         string content = ftbContent.Text;

         string caid = ddlCategory.SelectedValue;   

        News n = new News(title, content, caid);

         bool b = new NewsManager().Insert(n);

         if (b)

         {

             Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('新闻添加成功!');</script>");

          }

         else

         {

             Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('新闻添加失败,请联系管理员!');</script>");

          } 

8. 第三方工具的使用

FTB:FreeTextBox 控件,网页上功能强大的的编辑器,可以插入图片或者视频。。。

首先从网上将 FTB 下载下来,然后再 网站中 添加引用,引用 FTB文件夹中的 .dll文件,除此之外,还要在工具箱中 添加FTB选项 (选择“选项卡”添加)

在页面中调用

<FTB:FreeTextBox ID="ftbContent" runat="server" Language="zh-CN" ToolbarStyleConfiguration="OfficeXP" Width="540px" Height="300px">

  </FTB:FreeTextBox>

  每当页面中使用了 FTB,还会有一个 注册信息:

<%@ Register assembly="FreeTextBox" namespace="FreeTextBoxControls" tagprefix="FTB" %>

9. 出错页面:将任何出错时都跳转(自动导向)到 出错页面

web.config 文件

customErrors 应该 配置在 <system.web> 节点下面

<!--出现错误是跳转到出错页面-->

<customErrors mode="On" defaultRedirect="~/error.htm">       

</customErrors>

10. 发布网站

在 IIS 中 默认网站上 新建虚拟目录

属性中 ASP.NET 一定要选择一个 .NET版本

【出现的问题:访问IIS元数据失败】如果先 安装 .NET,再安装 IIS,那么 IIS 中 没有 .NET 的注册信息,所以 最佳的方式是 先 IIS 后 .NET

如果顺序反了,就要在 .NET 中重新注册 IIS : 运行 aspnet_regiis.exe

抱歉!评论已关闭.