BS系统经验总结
本文章是对刚做完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系统经验总结的更多相关文章
- win7重装系统经验总结报告(2013年6月29日凌晨1:45)
win7重装系统经验总结报告(2013年6月29日凌晨1:45) 步骤: 1.考虑被重做的电脑是否有重要文件在C盘.有则转移到D盘等非系统盘. 2.看该电脑是2GB内存还是4GB以上内存. 3.准备好 ...
- skyline(TG,arcgis server)BS系统部署
skyline的BS系统部署,正常情况下应该是TG来统一管理,SFS对矢量数据服务进行管理.但我们一直是试用许可安装的TG,发现SFS要么安装不成功,要么就是不稳定.对于Fly工程可以通过Publis ...
- 二十七、EFW框架BS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- “PMS-基础权限管理系统”实施某谱OA系统经验总结
“PMS-基础权限管理系统”介绍 "PMS-基础权限管理系统"是我一直想做的一个产品,融合多年开发及维护管理系统的经验,参考了很多系统,精心研制而成. 可以做为毕业设计参考,新手学 ...
- 文件宝局域网传输/播放功能Windows10系统经验贴(感谢文件宝用户@卡卡罗特 和@24K 純情)
本文由文件宝用户@卡卡罗特 和@24K 純情 两位用户提供,感谢二位. 先分享一个软件开发者的博客,http://www.cnblogs.com/flychen/也许里面的说明就能解决你的问题. 以下 ...
- 总结一下安装linux系统经验-版本选择-安装ubuntu
linux版本选择: 初次接触,建议选 Ubuntu 或者 Fedora,这两个发行版都很容易上手,而且两者都有很强大的中文社区,遇到问题比较容易解决,而且都有国内的源,安装或者更新软件时体验相对会好 ...
- DeskMini无传统机械键盘与鼠标接口的情况下使用U盘安装系统经验总结
总结安装纯净版Win7旗舰版系统安装过程所解决的问题要点: 1:UEFI引导启动的实现. 2:使用Dism++实现系统的安装. 3:使用Dism++解决新主板在安装系统过程中不能使用USB键盘和鼠标的 ...
- 从一个局长使用BS系统的无奈看测试点
今天我点名买了个B/S系统,听说只要有浏览器就能用.我最讨厌装客户端了,用浏览器就是方便啊. 下面就是我使用这个系统碰到的麻烦事: 我登录失败的时候没有任何提示,这没什么,反正提示也只是说失败…… 进 ...
- Mac安装Ubuntu18.04双系统经验以及感悟
1.扯一会 提到Mac很多人估计会觉得高大上,其实我也是这么认为的,因为我在13年之前用的不是Mac 而是普通的笔记本,总幻想着拥有一台Mac,当然了这个愿望在13年10月份左右就实现了 Mac最大的 ...
随机推荐
- JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存
1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 ...
- Java 关于集合框架那点事儿
1.引入集合框架 采用数组存在的一些缺陷: 1.数组长度固定不变,不能很好地适应元素数量动态变化的情况. 2.可通过数组名.length获取数组的长度,却无法直接获取数组中真实存储的个数. ...
- 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]
请尊重原贴作者 与 本贴楼主.原作者把自己丰富的经验分享给了大家,本贴作者每个贴子平均花了3个小时翻译. 所以,转载请注明出处:原贴地址:http://www.tonymacx86.com/ ...
- C#语法浮点型字面量
C#语法浮点型字面量 小数是生活中经常使用的一种数据表示形式.我们日常使用的5.5.0.6都是小数.在编程语言中,这种数据表示方式被称为浮点型数.浮点型数由整数部分.小数部分和小数点组成.浮点型字面量 ...
- 重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor
一般这个错误是由密码错误引起,解决的办法自然就是重置密码. 假设我们使用的是root账户. 1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下: #vim /etc/my.cnf(注:wi ...
- c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题
scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束). ① 遇空格."回车& ...
- Java基础学习——多线程之线程池
1.线程池介绍 线程池是一种线程使用模式.线程由于具有空闲(eg:等待返回值)和繁忙这种不同状态,当数量过多时其创建.销毁.调度等都会带来开销.线程池维护了多个线程,当分配可并发执行的任务时, ...
- 【转载】VC操作剪切板
1.在剪切板上放置数据 if(OpenClipboard()) //打开剪切板{ EmptyClipboard(); //清空剪切板 CString str; //从控件 ...
- codevs 1001 舒适的线路 kruskal/gcd
舒适的线路 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1001/ Description Z小 ...
- poj 2623 Sequence Median 堆的灵活运用
I - Sequence Median Time Limit:1000MS Memory Limit:1024KB 64bit IO Format:%I64d & %I64u ...