本文章是对刚做完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. react-native第一次开发记录

    1.安装指定版本 react-native init demo --verbose --version 0.41.0 2.更新依赖包 npm install -g npm-check-updates ...

  2. 五、django rest_framework源码之版本控制剖析

    1 绪论 Djangorest_framework的版本控制允许用户更改不同客户端之间的行为,且提供了许多不同的版本控制方案.版本控制由传入的客户端请求确定,可以基于请求URL,也可以基于请求标头. ...

  3. C#中的特性 (Attribute) 入门 (二)

    C#中的特性 (Attribute) 入门 (二) 接下来我们要自己定义我们自己的特性,通过我们自己定义的特性来描述我们的代码. 自定义特性 所有的自定义特性都应该继承或者间接的继承自Attribut ...

  4. iOS 9应用开发教程之iOS 9新特性

    iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...

  5. [ 原创 ] Java基础6--构造函数和抽象类的性质

    构造函数的性质 // A.方法名与类名相同: // B.没有返回类型(例如return.void等):// C.不能被static.final.native.abstract和synchronized ...

  6. HTML5区块和大纲算法

    原文链接: Using HTML sections and outlines - Mozilla Developer Network 每集HTML5+CSS3网页布局教程-2大纲算法 HTML5标准带 ...

  7. curl多文件上传

    发送: header('Content-type:text/html; charset=utf-8'); //声明编码//模拟批量POST上传文件$url = 'http://test.cm/rece ...

  8. 简单的文件上传html+ashx

    前台页面:<form action="upload.ashx" method="post" enctype="multipart/form-da ...

  9. PostgreSQL远程连接配置管理/账号密码分配(解决:致命错误: 用户 "postgres" Ident 认证失败)

    问题:致命错误: 用户 "postgres" Ident 认证失败 说明:这个是由于没有配置远程访问且认证方式没改造成的,只需要更改使用账号密码认证即可. 解决:找到pg_hba. ...

  10. 解决uploadify在Firefox下丢失session的问题

    今天在用uploadify上传插件时遇到了一个问题,由于我后台做了权限管理,每个请求都有去读session判断权限,但用这个插件时发现登录后上传不了,原因是在读session时认为没有权限而被拦截了, ...