本文章是对刚做完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. Android Studio奇技淫巧

    No1: Ctrl+E:显示最近浏览过的文件 Ctrl+Shift+E:显示最近编辑过的文件 Ctrl+Tab:切换最近编辑过的文件 No2: 条件断点:断点右键 No3: 全局断点 这样只要碰到空指 ...

  2. 自然语言处理系列-4条件随机场(CRF)及其tensorflow实现

    前些天与一位NLP大牛交流,请教其如何提升技术水平,其跟我讲务必要重视“NLP的最基本知识”的掌握.掌握好最基本的模型理论,不管是对日常工作和后续论文的发表都有重要的意义.小Dream听了不禁心里一颤 ...

  3. Entity Framework Core(3)-配置DbContext

    设计时 DbContext 配置 EF Core 设计时工具如迁移需要能够发现和创建的工作实例DbContext以收集有关应用程序的实体类型以及它们如何映射到数据库架构的详细信息的类型. 此过程可以为 ...

  4. TCP的三次握手与四次释放

    TCP的三次握手与四次释放 一.名词解释     序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给 ...

  5. 王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告

    邻接矩阵实现 例图 分析 变量 需要一个链表来保存数据-即保存结点 需要一个二维数组来保存每个变得权值,有则填入具体数值,没有则用0 定义一个保存边个数的值 函数方法 得到图中边的个数 得到结点的数据 ...

  6. hdu 4118 dfs

    题意:给n个点,每个点有一个人,有n-1条有权值的边,求所有人不在原来位置所移动的距离的和最大值.不能重复 这题的方法很有看点啊,标记为巩固题 Sample Input 1 4 1 2 3 2 3 2 ...

  7. bzoj 1798: [Ahoi2009]Seq 维护序列seq 线段树 区间乘法区间加法 区间求和

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeO ...

  8. git服务器安装和配置

    http://www.cnblogs.com/dee0912/p/5815267.html

  9. SpringMVC 方法参数设置

    /** 在方法中配置参数: (1) 内置对象配置: request:获取cookie.请求头... 获取项目根路径 request.getContextPath() response:用于ajax的输 ...

  10. How to exit the entire application from a Python thread?

    If all your threads except the main ones are daemons, the best approach is generally thread.interrup ...