昨天刚刚发现的。

我做了个页面,文字输入框用的是背景图上的文字框,因此想让input不显示边框后和底图上的文字框对齐。

本来很简单的事情,算一下左边距,css里写一下就OK了。事实上我用IE6,IE8,Fx,Chrome看了一下都没问题。就收工了。

但回家用IE7一看,傻眼了。整个就乱了。于是跑回公司,用IE8的兼容模式一看,也是乱的。

最后发现乱的原因是input框和form之间有一段距离,我试着调了form的padding,input的margin,都没用,这段边距如论如何都去不掉。

最后火了,新建了一个空白文档一步步写style,最后惊奇的发现,居然没问题,input和form是紧贴着的,并没有间距。这是怎么回事?

最后对比了两个html,发现了问题所在。

有问题的html里,我在form外套了两个div,这两个div都设置了25的margin-left。结果form里的input就继承了2个margin-left,并且还叠加了,变成了margin-left=50!

这真是个诡异的BUG,因为不仅强制指定input的margin-left=0px;不起作用, 而且这个左边距居然还会叠加继承。实在是诡异。

最后我删除了外面两个DIV的左边距才解决了这个问题,不知道有没有高人有更好的解决方法。

posted @ 2009-06-03 14:26 蓝色的风之精灵 阅读(453) 评论(2) 编辑

前几天常使用.Net 3.5里的Entity Framework做个网站的时候,发现了一个问题:添加记录时,对于DateTime型的数据,无法使用数据库的默认值。

虽然不是什么严重的问题,但牛脾气上来了 ,就行解决这个问题。

具体的情况是这样的,我的数据库有个Users表,三个字段,id,username,createtime。

id是int型,自增长,主键

username是nvchar(10)型,不允许为空

createtime是DateTime型字段,不允许为空,默认值 是getdate()

如果用Entity框架生成实体类,直接添加数据,不指定createtime,那就会在SaveChanges时出错:

            using (LinqDemoEntities lde = new LinqDemoEntities())
            {
                Users user = new Users
                {
                    name = "Admin"
                };
                lde.AddToUsers(user);
                lde.SaveChanges();
            }

最后在别人的指点下,才知道这是EF的一个Bug,需要将edmx文件里,createtime字段加上 StoreGeneratedPattern="Identity" 属性才行。

这样就能使用数据库默认值了。

posted @ 2009-06-03 09:41 蓝色的风之精灵 阅读(1995) 评论(11) 编辑