首页 新闻 搜索 专区 学院

html服务器控件为什么表单提交时,后台用request["name"]为null

0
[已解决问题] 解决于 2014-07-03 11:10

html元素如下: <input type="text" name="user" id="name" />

为什么这个文本框表单元素加上runat="server"属性后,表单提交时在后台用requset["user"]就取不到值,为null。不加这个runat="server"属性就能取到值,这是为什么

龍四的主页 龍四 | 初学一级 | 园豆:36
提问于:2014-04-27 14:25
< >
分享
最佳答案
0

加了runat=sever之后,就变为服务器控件。通常服务器控件不需要这么取值。如果一定要使用request取值,可以看看控件生成的name值,如果使用模板页等一般控件的id与name都会发生变化。

奖励园豆:5
lucika.zh | 初学一级 |园豆:59 | 2014-04-28 09:11

有些属性会改变,有些不会改变。通常都会有一个唯一标识。注意一下,asp.net  runat=sever本质。

wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 01:59

@wongdavid: 我没有表达runat=sever之后,ID一定会改变。我只举了一个常用的现象,模板页,项目中一般都会用到吧,我们项目都使用到。还有很到情形控件的ID会发生变化,即时不适用模板页。充分了解之后再表达自己的观点也不为迟。

lucika.zh | 园豆:59 (初学一级) | 2014-04-29 16:51

@lucika.zh: 你说的是,主要是看控件内核怎么设计的。

wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 21:17
其他回答(3)
0

请使用Request.Forms["user"]

wongdavid | 园豆:394 (菜鸟二级) | 2014-04-27 15:34

 刚试了用 string name=Request.Form["user"];   name的值还是为null  应该不是这个问题

支持(0) 反对(0) 龍四 | 园豆:36 (初学一级) | 2014-04-27 15:40

@龍四: 我看错了,加了runat="server",需要InputID.value.

没加runat="server",后台需要request获取。

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-27 16:37

能解释下这是为什么呢

支持(0) 反对(0) 龍四 | 园豆:36 (初学一级) | 2014-04-27 19:08

@龍四: 请回归到runat="server"的本质,它的本质除了ID或者其他的不变,但name属性会改变或者其他的属性会改变,也就是说你加了runat="server"这个属性,它会格式化掉相关的标签。你注意观察一下,看一下生成的html代码,你会发现有runat="server"这个属性,输入框name的属性值,是不是已经改了?没加runat="server",输入框name的属性值,是不是没改?道理就是这样,这就是为什么requet无法接受服务器端数据。

 

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 01:56

解释的很详细 终于明白啦非常感谢啊

支持(0) 反对(0) 龍四 | 园豆:36 (初学一级) | 2014-04-29 02:25

@龍四: 给分!!!

支持(0) 反对(0) wongdavid | 园豆:394 (菜鸟二级) | 2014-04-29 08:53
0

你给一个value 你接收就不是null了  <input type="text" name="user" id="name"  value=‘3333’/> 你试试

wolfy | 园豆:2636 (老鸟四级) | 2014-04-27 16:03

加了runat=”server“ 这个属性表单提交后台 request["user"]就为null

支持(0) 反对(0) 龍四 | 园豆:36 (初学一级) | 2014-04-27 19:12
0

服务器控件加上  ClientIDMode="Static"

amityat | 园豆:476 (菜鸟二级) | 2014-05-03 17:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册