关于是否加引号:在以上三个位置使用时,是否应该将%= str%或%# str %置于单引号或双引号中呢?对于在不同位置,处理的方式是不同的:(具体请在下面两种方式的具体介绍时,加以体会)
(1)对于第一种位置,由于JavaScript是弱类型的,如果绑定时加引号,显然就认为就当做字符串来处理,这始终是正确的;如果绑定时不加引号,它将认为这是个数值型的 , 那么如果获取的真是数值,当然可以,如果是非数值型 , 则将产生脚本错误,这即使对于JavaScript赋值常量时,也是同样的:
以下为引用的内容:
var test1 = 123b;//运行时报错
var test2=123;//正确 , 是数值型
var test3="123b";//正确,字符串型
(2)对于第二种位置,经过测试,无论是对于服务器端控件属性还是HTML标签属性,加引号总是正确的;如果不加引号 , 则两种属性的处理方式不同:
对于服务器端控件属性,如果绑定的代码块不加引号,则编译时会提示“验证(ASP.NET):特性值前后必须加引号”的警告信息,但是生成为HTML后,对应生成的HTML属性已经被加上引号并获取了正确的绑定结果,因此加不加引号不会影响使用 , 但是建议对于规范的代码,还是加上为好;
对于HTML标签属性,如果不加引号,则编译时会提示“验证(XHTML 1.0 Transitional): 特性值前后必须加引号”的警告信息,并且生成为HTML属性也确实没有加上引号,那么虽然属性后面确实是没有加上引号的正确的绑定值,但是不一定能展示出想要看到的结果 。比如对于input标签的value属性,如果绑定的字符串是"hello world from variable”,则在客户端的input显示出的内容实际上只是"hello”字符串,生效的属性值是一个被截断的字符串,它从属性后的一串字符串(若未加引号)的第一个非空字符开始,截止到下一个空字符的前一个字符为止(比如对于"hello world”,结果将是"hello”) , 因此,加上引号是必须的 。
(3)对于第三种位置,加与不加引号,获取的值及其显示均不受影响 。
因此建议,所有绑定表达式都加上引号,作为字符串获取,然后根据实际需求,用相应函数进行转换,得到所需要的类型 。
另外,这里所说的后台变量是泛指的,包括如下:
成员变量
方法或属性的返回值
【java网站地后台代码 java怎么写网页后端】表达式,也就是所有后台能够执行的代码,运行后所得到的值(也就是直接将后台代码写在前台代码中,记得使用完全限定名或在后台中using相关namespace)
数据集合
后台变量有一些约束条件,需要满足:
(1)变量修饰符要求 。变量是静态或者实例字段均可 。对于代码隐藏模式的ASP.NET,以上的所述的变量必须为public或protected类型(因为是基类与派生类的关系),private或者internal都不行 , 而代码嵌入模式则任何修饰符的变量均可访问(一个类内部的关系) 。
(2)变量类型要求 。由于前台属性一般是字符串类型,而JavaScript基本类型也就是字符串型、数字型、布尔型,因此对应的变量应该也是这几种方式 , 其余类型如果不被支持(如复杂类型、数组、引用类型等),前台获取的就是调用了变量的ToString()方法所得到的字符串 。因此,在绑定时,要根据情况看是否能进行隐式类型转换,必要时还要用相关函数来强制转换,以保证前台可以获得正确的值 。当然 , 对于数据绑定类控件,它的有些属性可以为数据集合 , 但这时的绑定只能通过下面第二种方式才被支持 。
推荐阅读
- 用什么可以祛斑视频,用什么能祛斑?
- 为什么国内游戏ios和安卓,为什么国内游戏ios和安卓一样
- 如何开一个大数据营销公司,大数据开店
- u盘视频怎么连接电脑播放,怎么用u盘放视频
- vb.net数组数据类型 vb中数组是什么意思
- 飞鱼星路由器怎么控制网络,飞鱼星路由器怎么连接
- asp.net提交并跳转,aspnet confirm
- 苹果怎么从u盘装双系统,u盘怎么装苹果系统教程
- python定义析构函数 python定义构造方法