永发信息网

c# .net 做的网页,texbox 写了MaxLength="30",为什么还有几条记录>30了?请教高手!

答案:4  悬赏:40  手机版
解决时间 2021-04-01 13:51
  • 提问者网友:不要迷恋哥
  • 2021-04-01 06:45
c# .net 做的网页,texbox 写了MaxLength="30",为什么还有几条记录>30了?请教高手!
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-04-01 07:50
maxlength只是在手工改变数据时,会限制最大值。如果你的数据是在后台初始化时填充,即PAGE_LOAD时填充的,那么不会做限制。
比如A,B两个表,A1,B1字段。A1长度为30,B1长度为40,你保存了数据A1=“30个字符的长度。。。。”,B1=“40个字符的长度。。。。。。。”,提交上去,数据写入到数据库中。然后你修改页面上的两个文本框 textA1.Maxlength=30,textB1.Maxlength=30。重新编辑下,再F5走程序,你会发现,首次加载时填充的textB1.value 是数据库的长度为40的数据,而不是你想要自动截取了长度为30个字符的数据。这也是大家在创建表结构时,需要注意的事情,如果以后遇到多表用相同类型的字段,且又需要多表存在时,一定要记得类型及长度保持一致。追问库开始是空的,全部记录都通过页面提交,数据库我用的nvarchar(60)类型,几十万条记录 就有20条左右超了30长度,从页面输入时就做了控制,不知道怎么存进去的追答哥呀,你的类型是nvarchar(60)啊,这个数据类型可以存储60个汉字,120个字符。
如果你是手工输入的数据,页面又做了maxlength=30的限制,那么数据有个别的超过了长度为30的,你要看看SAVE()方法在更新操作时是不是对字段追加了什么。页面的限制maxlength也是包含空格这种数据的。追问开始的确存在数据库没有设计好的问题,可是几十万条记录,只有20条超长了,应该属于个例了吧? save方法应该不会有问题,否则大多数就要出问题了啊,初步分析是不是有什么浏览器不支持maxlength追答你用的啥浏览器?oper?火狐?maxlength应当是通用的属性,没啥不支持的吧。
你把错误数据帖出来,咱瞧瞧是什么样的?追问不是我浏览器的问题,是我做的网站,放公网上,有用户填报,今天查看数据,发现这个问题。错误数据就是:按理来说不应该有len>30的,结果发现20条。最长的一个是有59个汉字。程序倒是不报错,因为数据库字段长度设计的大了嘛,nvarchar(60)类型,可存60个汉字。追答你自己做下操作,从其它地方复制,拖拽,超过30个字符的数据,放到网站上,看看能不能放进去。如果能放进去,有可能是用户用的这种操作。你的文本框就要加onchage()方法,用JS验证,或者在后台进行合法数据的长度验证。追问我试过了,都不行,自动就截取了。追答哦。那客户用的是什么浏览器?你能不能用他们的复现下?如果问题无法复现,咱俩光在这说,也没用啊。
我现在有种怀疑的问题,如果是几十万条数据,有20条件错误数据,会不会是人为手工改的数据?你可以问问你们同事。我估计客户应当没那么闲的改数据。追问那应该不会,服务器全部在我们这,密码只有我俩人知道。 不管了,就这样着吧,呵呵 谢谢你了!
全部回答
  • 1楼网友:十鸦
  • 2021-04-01 10:10
似乎只控制输入,原先的控制不了吧
  • 2楼网友:妄饮晩冬酒
  • 2021-04-01 08:40
你只说是textbox的长度你限制了。你在录入的时候做限制了么?
或者说你以为在web端控制了输入限制,就OK?
你知道maxlength这个其实最终是被解释成了JS来运行的。
我不知道你是怎么把数据传入数据库的,但是你肯定没有在录如数据前检查数据的安全性!
你的数据超过30说明不是正常数据,你既不做限制 也不抛出异常。数据出问题,你肯定找不到原因,try{}catch(){}你的代码。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯