本文章是对刚做完BS系统的总结。主要记录开发过程中遇到的问题,及问题是如何解决的。

1,界面显示

一个系统界面首先要和谐,比如不同页面文本框长度高度要统一,按钮样式要一致,表格显示一样居中都居中靠左都靠左,这也就是所说的全局观,整体上的样式一直,界面才显得和谐。

这里主要解决按钮样式的问题。

系统的框架是直接用别人写好的,我们要做的就是向框架中填东西,这个框架自带了一个登陆界面,做的挺漂亮的,按钮提示框都是经过CSS的处理美化的。我们系统功能实现后发现,系统中的按钮都是Button而且是没有经过处理的,提示信息也是没有经过处理的,这就很不和谐,虽然测试组没有给我们提这样一个Bug,但是这个问题确实存在。

既然登陆界面上有现成的样式,将它样式拿过来直接用不就得了么,问题又来了,登陆界面上的“确定”做的跟按钮样式一样,但他实际上却是<span>标签,做的挺厉害的标签效果跟按钮还要好,我们改就麻烦了,我们系统内的button确实不支持CSS中图片效果。

这种思路行不通,那就赶紧转换思想吧。Button不行,那我们就用行的LinkButton,只要LinkButton的ID和Onclick事件的名称跟替换的Button的一样,后台代码就不用修改。

总结:当这条路行不通时,赶紧转换思想,想另一条路去实现。

2,功能实现


1),JavaScript中读取Session值。

在这里我首先想说说C#是如何实现异面存取值得。

都知道将公用变量存在Session中在读取的时候会非常的方便。这个功能在C#中实现却有点困难。

因为C#是面向对象的,在这个界面中实例化一个对象,将字符串赋给对象的一个属性,要想在另一个类中使用吧还得重新实例化(非静态的类和方法),而且吧实例出来的跟之前那个赋属性的又不是一个对象。所以说在C#中没有想Session这样直接异面存取值得功能。那要想在C#中如何实现异面存取值得功能呢,上面提到要想使用类得实例化非静态的类除外,第一种方法出来了,我们声明一个静态的类一个静态的方法,使用的时候就去找这个静态类,这样不就达成目的了么。还有一种方法,我们在做机房收费系统的时候一般都是用实体类传参,我们仿照实体类,给窗体加属性,用于异面读取。

这两种方法都达到了异面传值,不同的是使用静态类,只要是静态类中的静态属性有值,其他界面都可以用,如果使用窗体传值,必须要给使用值得窗体加属性。在BS中有Session提供给我们直接使用我感觉太幸福了,都不用我们费力自己去实现。

下面回过头来说JavaScript读取Session值。

在JavaScript中是不识别Session的,那就等于不能直接读取Session值了。那我们就间接读取。

方法一,将Session值传给隐藏控件,在js中获取隐藏控件的值。这个是能实现的。

代码:

Var  sessionName=""
function ToGetString() {
sessionName= document.getElementById("hidname");
sessionName= sessionName.value;
alert(sessionName); //是有值的 }

但是在我们系统的环境下是实现不了的,原因就是js是顺序执行的,在functionToGetString ()函数中能都弹出alert,在函数外面就不能弹出来,也就是说在函数外面是取不到Session返回值得。这种方法行不通,那再看另一种方法。

方法二,js中是可以直接获取后台函数的返回值得。

具体实现代码如下:

varsessionName=<%=getString()%>";  //获取值    js前台代码

public string getString() {        //后台函数代码
return Session["name"].ToString();
}

2)根据角色权限显示界面

系统的一级菜单列表框是写死在代码中的,如下图中人员管理,任务管理,机房信息管理,值班老师。

子菜单要求根据用户权限显示隐藏。如上图中值班老师下的子菜单,如果是管理员的话就显示添加值班老师子菜单,如果不是管理员就隐藏。

直接让子菜单隐藏,这个几乎也是不可能的,因为一级菜单列表和子菜单列表都是通过读取Xml文件加载的,一级菜单列表加载一个xml,每一个一级菜单下的子菜单读取一个xml加载。

起初以为隐藏是做不了了,功能不能不做,把添加值班老师功能换成按钮添加在查看值班老师界面上。这种方法在功能实现不了的情况下是一种解决方法。但是界面肯定不和谐,也不美观。下面看看其他相比好点的实现方法。

方法一:多写两个xml文件,在子菜单加载的时候就判断用户权限,根据用户权限读取不同的xml文件。

如值班老师菜单:

如果用户权限是管理员权限就读取WorkTeacherAdmin.xml文件,如果是一般用户就加载WorkTeacher.xml,如果是负责人就加载WorkTeacherLeader.xml文件。

现在系统采用的是这样实现方法。在网上还看到一种实现方法,就是将用户权限跟对应的菜单写到数据库中,加载的时候直接去数据库中读,这种实现要用到Ajax技术,现在还没有掌握,等掌握了Ajax后再去用这种方法实现,现在可以肯定这种方法也是可以实现的。而且比读取不同的xml效果要好。

3,打包发布


1)发布的网站地址文件不能放在桌面或是C盘。

系统第一次申请测试时,发布的网站文件夹是放在桌面的,结果导致只有自己的电脑能通过Ip访问,局域网内都不能访问。

2)发布的端口如果不是系统默认的(80)访问的时候要添加权限或者关闭系统防火墙。

在新闻系统发布的时候由于是用的默认端口,在别人的电脑上测试了一下可以了就没有再考虑其他的问题,这次发布的不是默认的端口了,同样导致局域网内无法访问。

解决方法,一是关闭系统防火墙(不推荐),二是添加系统默认端口

当然在做系统的时候遇到的问题肯定比这些多的多,在错误中总结经验,在经验中成长。

BS系统经验总结的更多相关文章

  1. win7重装系统经验总结报告(2013年6月29日凌晨1:45)

    win7重装系统经验总结报告(2013年6月29日凌晨1:45) 步骤: 1.考虑被重做的电脑是否有重要文件在C盘.有则转移到D盘等非系统盘. 2.看该电脑是2GB内存还是4GB以上内存. 3.准备好 ...

  2. skyline(TG,arcgis server)BS系统部署

    skyline的BS系统部署,正常情况下应该是TG来统一管理,SFS对矢量数据服务进行管理.但我们一直是试用许可安装的TG,发现SFS要么安装不成功,要么就是不稳定.对于Fly工程可以通过Publis ...

  3. 二十七、EFW框架BS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  4. “PMS-基础权限管理系统”实施某谱OA系统经验总结

    “PMS-基础权限管理系统”介绍 "PMS-基础权限管理系统"是我一直想做的一个产品,融合多年开发及维护管理系统的经验,参考了很多系统,精心研制而成. 可以做为毕业设计参考,新手学 ...

  5. 文件宝局域网传输/播放功能Windows10系统经验贴(感谢文件宝用户@卡卡罗特 和@24K 純情)

    本文由文件宝用户@卡卡罗特 和@24K 純情 两位用户提供,感谢二位. 先分享一个软件开发者的博客,http://www.cnblogs.com/flychen/也许里面的说明就能解决你的问题. 以下 ...

  6. 总结一下安装linux系统经验-版本选择-安装ubuntu

    linux版本选择: 初次接触,建议选 Ubuntu 或者 Fedora,这两个发行版都很容易上手,而且两者都有很强大的中文社区,遇到问题比较容易解决,而且都有国内的源,安装或者更新软件时体验相对会好 ...

  7. DeskMini无传统机械键盘与鼠标接口的情况下使用U盘安装系统经验总结

    总结安装纯净版Win7旗舰版系统安装过程所解决的问题要点: 1:UEFI引导启动的实现. 2:使用Dism++实现系统的安装. 3:使用Dism++解决新主板在安装系统过程中不能使用USB键盘和鼠标的 ...

  8. 从一个局长使用BS系统的无奈看测试点

    今天我点名买了个B/S系统,听说只要有浏览器就能用.我最讨厌装客户端了,用浏览器就是方便啊. 下面就是我使用这个系统碰到的麻烦事: 我登录失败的时候没有任何提示,这没什么,反正提示也只是说失败…… 进 ...

  9. Mac安装Ubuntu18.04双系统经验以及感悟

    1.扯一会 提到Mac很多人估计会觉得高大上,其实我也是这么认为的,因为我在13年之前用的不是Mac 而是普通的笔记本,总幻想着拥有一台Mac,当然了这个愿望在13年10月份左右就实现了 Mac最大的 ...

随机推荐

  1. linux网络管理----远程登录工具

    1.对称加密 例子:压缩文件加密码,别人要打开,只能知道你的密码,这样的方法不安全,因为这个密码可能是你的qq密码或者是邮箱密码等等 2.非对称加密 类似于放羽毛球的桶,两边都可以拿资源,两边都加一个 ...

  2. 虚拟机zookeeper和hbase集群搭建

    集群zookeeper dataDir=/usr/local/zookeeper/dataDir dataLogDir=/usr/local/zookeeper/dataLogDir # the po ...

  3. JVM快速入门

    最近开始了全面的JAVA生态环境学习,因此,JVM的学习是必不可少的一个环节.和.NET的CLR一样,一起的JAVA应用均跑在JVM虚拟机上,不过相对我们只能干看看的CLR,JVM有很大的灵活性,可以 ...

  4. python opencv3 获取摄像头视频

    git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 捕获摄像头10 ...

  5. 【推导】【数学期望】【冒泡排序】Petrozavodsk Winter Training Camp 2018 Day 5: Grand Prix of Korea, Sunday, February 4, 2018 Problem C. Earthquake

    题意:两地之间有n条不相交路径,第i条路径由a[i]座桥组成,每座桥有一个损坏概率,让你确定一个对所有桥的检测顺序,使得检测所需的总期望次数最小. 首先,显然检测的时候,是一条路径一条路径地检测,跳跃 ...

  6. bzoj 1069

    最开始想到的是枚举3个点,另一个点用卡壳的思想,但实际上可以只枚举两个点(对角线上的两个点),其余两个点用卡壳. /****************************************** ...

  7. w​x​F​o​r​m​B​u​i​l​d​e​r​初​体​验

    第一步 打开wxFormBuilder 修改工程信息并保存工程 Name: 工程名 File: 生成代码(.py)文件名 Code_generation: 生成代码类型 第二步 创建窗体 切换至for ...

  8. hdoj 1753 大明A+B 高精度/java

    大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. webbench1.5源码读后总结

    webbench简介 webbench由C语言写成的用于网站压力测试的一个非常简单的工具,它最多可以模拟30000个并发连接去进行测试. webbench的安装和使用可以自行百度,也可以过下这篇文章. ...

  10. ThinkPHP实现登录限制时__construct和_initialize的区别

    ThinkPHP支持两种构造方法:  __construct和_initialize(ThinkPHP内置的构造方法). 测试URL为:  http://oa.com/index.php/Admin/ ...