锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 添加hidden类型的input回发没有值的原因及解决办法
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

asp.net中添加了hidden类型的input回发没有值的原因及解决办法

Hidden 对象代表一个 HTML 表单中的某个隐藏输入域。这种类型的输入元素实际上是隐藏的。这个不可见的表单元素的 value 属性保存了一个要提交给 Web 服务器的任意字符串。如果想要提交并非用户直接输入的数据的话,就是用这种类型的元素。在 HTML 表单中 <input type="hidden"> 标签每出现一次,一个 Hidden 对象就会被创建。您可通过遍历表单的 elements[] 数组来访问某个隐藏输入域,或者通过使用document.getElementById()。

问题

在asp.net中,我尝试象普通的html页面一样,添加了一个hidden类型的input,企图在回发后仍然存着用户之前录入的值。(这样做的理由很多,比如说用户录了一个姓名,在点击一个runat=server的提交按钮后,服务器判断该姓名已经存在,然后输出javascript.alert提示用户名称已经存在,请重新输入。这时候需要保存数据现场,也就是用户之前录入的姓名还得显示在文本框中。)结果我发现,回发后,再次从这个input中取值,却取不到值。

解决办法

将这个hidden类型的input修改为runat=server。问题得到解决。

我之前一直是这样认为的(这个想法多多少少跟自己没有深入了解asp.net的机制有关):只要是hidden的input,在从服务器端返回到客户端后,呈现页面的时候,它的value就一定会有值。可是一旦仔细想就会觉得不对。凭什么hidden的input就一定会有值?今天写了个最基本的asp时代的简单页面,写到最后就发现自己一直以来的这个想法是错的。

其实就算是asp.net,原理和asp也是一样的,都是客户端发起请求,server端处理完后,返回。如果要文本框中保存着原有值,那就必须在服务器端取到后再赋回给客户端的文本框。可以肯定的是,asp.net中,每次提交的viewstate以hidden的input形式存在,目的只是以hidden的方式存值。在每次从服务器端返回后,文本框中的值肯定是从这个隐藏的input中分别取值出来重新赋上的。

附asp测试代码(你也可以直接将提交按钮的type设成submit):

<%
myvar=Request.Form("txt")
%>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script> function clickBt()
{
var inputTxt = document.getElementById("txt");
var inputHd = document.getElementById("hd");
inputHd.value = inputTxt.value;
form1.submit();
}

window.onload=function() { document.getElementById("show").value = document.getElementById("hd").value; } </script>

</HEAD> <BODY> <form id="form1" method="post" action="test.asp"> it is a test: <input type="button" id="btn" value="提交" onclick="clickBt()"/> <input type="text" name="txt" value=""/> <input type="hidden" id="hd"/>

<br/>hd's value: <span id="show"></span>

<br/>response: <%Response.Write myvar %> </form> </BODY> </HTML>

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内