控件属性设置的合不合适,直接关系到应用程序的成败,而且对用户界面的友好性也有很大的影响。由于不同的控件具有不同的属性,为此管理起来有一定的难度。在这篇文章中,笔者就针对这一块内容谈谈自己的感受。
在可视化编程中,控件属性的管理至关重要。可以这么说,控件属性设置的合不合适,直接关系到应用程序的成败,而且对用户界面的友好性也有很大的影响。由于不同的控件具有不同的属性,为此管理起来有一定的难度。在这篇文章中,笔者就针对这一块内容谈谈自己的感受。
一、HTML控件的归类。
为了便于管理,在VisualStudio平台中对HTML控件进行了分类,主要分为两类:容器控件和输入控件。这是HTML控件的两个子集,他们分别有不同基类的属性。在讲述具体的操作与设置之前,先要记住一个原则性的内容,即在任何一个HTML控件上声明的任何属性都会被添加到这个控件的Attributes集合中,并且可以像属性那样以编程方式对其进行操作。
这是什么意思呢?举例来说。现在需要更改某个元素上的某个属性。此时开发人员可以通过编写程序的方式来更改这个属性的值。不过其最终的内容还是会在Attributes集合中体现出来。也就是说,无论通过什么方式更改,开发人员在VisualStudio平台中都可以通过查看这个集合来了解某个控件属性的最新消息。
二、所有HTML控件都具有的属性。
有些属性是所有的HTML控件(包括容器控件和输入控件)都具有的。中的来说,有四个属性。这几个属性也是我们平时用的最多的。
第一个是Disabled属性。这个属性主要用来获取或者设置一个值。该值指示在浏览器上呈现HTML空间时是否包含Disabled属性。如果有这个属性的话,这将这个控件设置为只读控件。这是微软官方网站上对这个属性的定义。简单的说,就是设置某个空间是否为可用。在实际工作中,这个属性经常会用到。
如上图所示,这是笔者开发的一个股票交易模拟软件。在上图中最下方的“买入下单”按钮,它就是一个控件。注意在买入价格与买入数量为空的情况下,这个空间是灰色的,表示其不可用。当买入价格与买入数量文本框中有内容的时候,这个控件就会变为可用。这个特性就是根据“Disable”这个属性来控制的。实现的方法很简单。当鼠标的焦点离开买入数量文本框的时候,判断一下这个文本框中是否有对应的内容。如果有的话,就更改“买入下单”这个控件的Disable属性的值。更改后,这个控件就变为可用了。
在应用程序开发中,这种技巧经常使用。主要就是为了防止用户的误操作,提高用户界面的友好性。所以开发人员对于这个属性要彻底掌握。
第二个属性是Visible。这个特性跟第一个属性有点相似,只是其表现的方式不同。其主要用来控制某个控件的可见性,即是否显示在页面上。在实际工作中,这个主要用在权限控制上。如现在有个销售订单的页面,销售人员可以看到产品的单价,并对其进行修改。仓库人员虽然可以查看订单信息,但是却不能够看到订单上的价格。此时就可以通过Visible属性来实现。在窗口打开的时候,需要判断一下当前用户的角色。如果用户的角色为“仓库角色”的话,则将这个销售订单窗口的价格文本框控件的Visible属性设置为“False”,此时这个控件就不会在页面上显示。相反,如果这个属性的值为True的话,则就会显示在页面上。所以这个属性与第一个属性虽然本质上的作用是相同的,都是为了控制用户的某个操作。只是其表现形式不同。前一个属性会把控件变为不可用,而后一个属性这会让控件不显示。但是两则仍然有所不同。如前一个属性,虽然控件变为灰色不可用了,但是控件上面的内容仍然有显示。而第二个属性就是根本不显示控件的内容。
为此在不同的情况下,开发人员要选择使用不同的属性。如上面这个价格的案例,如果仓库人员不能够看到价格,那么就需要使用Visible属性。但是如果仓库人员可以看到价格,只是不能够对其进行修改,那么就需要使用Disable属性。简单的说,Disable属性用来控制控件是否可以修改(是否可用);而Visible控件则用来控制控件是否在页面上显示。
这两个属性是所有的HTML控件都具有的,也是使用的最频繁的。除此之外,Style属性和TagName属性也是共有属性,前者主要用来指定HT服务器控件的所有级联样式表属性(即CSS),后者主要用来取得Runat属性的标记的元素名。这两个属性在使用的时候没有特殊的技巧,笔者这里就不过多展开了。
三、输入控件的共有属性。
首先是Value属性。简单的说,这个就是用来设置或者获取与输入控件关联的值。而实际上,其具体的内容会根据上下文环境的不同而有所差异。如同样是文本框,如果这个文本框允许更改,则这个属性的值就是文本框中输入的文本。但是如果在不允许输入文本的文本框中(即文本框的属性为只读),则这个值就是控件中显示的标题。注意这个特系可能跟其他的开发平台也说不通,开发人员要注意识别。
其次是HTMLInputButton类。顾名思义,这是一个按钮类型的控件。通过这个类,可以在网页上创建按钮控件。这个控件也有很多的属性。如有些按钮是跟某个表单联系在一起的。如下图所示,“同意并提交”按钮就是一个表单中不可缺少的组成部分,此时就需要使用Type=Submit属性。在有些表当中还有一个“重置”按钮。它的作用是将表单中所有控件的值设置为默认的值,此时需要用到的属性为Type=Reset。其实开发人员也可以通过使用普通的按钮然后通过编写代码来实现。但是使用这些合适的属性,则可以免去编写代码的麻烦。如使用Reset属性的话,则可不需要编写更新表单中控件默认值的代码。
四、控件属性使用时要兼顾安全。
在选用控件或者管理属性的时候,除了要考虑到用户有好性的同时,还需要注意安全性。最简单的一个例子,就是用户登录框的设计。用户需要输入帐户与密码来登录系统。此时为了安全起见,但用户输入密码信息的事后,需要以掩码的信息显示。如下图所示,用户在输入密码信息的时候,要使用掩码(如符号*或者#等表示用户输入的密码)。这可以防止用户在输入时被其他人无意或者有意中看到,从而影响到用户数据的安全。
类似的安全机制还有很多。如对于文本框的控件,为了有效防止嵌入式攻击,往往需要对文本框中输入的内容进行验证。如一般情况下,能够不使用这个文本框的,就不要使用。如可以通过单选或者复选框、列表控件等等来代替文本框。如果确实需要用到文本框的话,也最好对其中输入的内容进行验证。如能够含有一些危险的字符等等。在VisualStudio平台中,还可以对文本类型的字符串数据采用HTML编码验证来防止嵌入式攻击等等。
总之,在控件层面就做好安全设计,这对于提高应用程序以及后台数据库系统的安全,效果是很明显的。当然这会增加控件设计与管理的难度与复杂程度,但是笔者认为,考虑到安全,权衡利弊之后,这还是值得的。因为当数据传递到后台,再来防止嵌入式攻击的话,难度会更大。