今天公司的正式环境有个功能不好使,但是测试环境没有问题,经过和同事的研讨,发现应该是我在写代码的时候把Textbox的visible属性设置为false导致的。
当时的需求是需要在发邮件的时候加上“相关说明”,而“相关说明”的内容是由第一个发邮件的人填写的,第二个人在接到邮件以后,登录系统,发送第二封邮件,
邮件的“相关说明”是用第一个人的最后一次写的“相关说明”,自己不写“相关说明”。由于公用一个上传,发邮件页面,并且只有第一个人能够看到“相关说明”的
文本框。因此,我把Textbox的Visible默认设置为false,第一个发邮件的时候再设置成TRUE。
程序在测试环境运行没有问题,然而今天在正式环境运行的时候,却出现了第二个人没有获取到第一个人的“相关说明”。
通过同事的帮忙排查,发现因为Textbox的visible被设置成了false,虽然可以赋值,可能由于不同浏览器的原因,没有解析出来Textbox,无法取值,所以导致了没有相关说明。
同事给出了用div的方法来隐藏和显示
<div id="mydiv" runat="server" style="display:none;"> <asp:Label ID="LalExplain" Text="相关说明" runat="server" Visible="false" /> <asp:TextBox ID="TxtBoxExplain" runat="server" Width="700px" TextMode="MultiLine"></asp:TextBox> <asp:Label ID="Label2" runat="server" ForeColor="Red"></asp:Label> </div>
后台用以下代码来显示
mydiv.Style.Value = "display.block";
以下是浏览器解析后的代码
<div id="mydiv" style="display:none;"> <textarea name="TxtBoxExplain" rows="2" cols="20" id="TxtBoxExplain" disabled="disabled" class="aspNetDisabled" style="width:700px;"> 1、信息查询 2、系统说明</textarea> <span id="Label2" style="color:Red;"></span> </div>
通过这种方法,只是将Textbox不可见了,浏览器同样可以解析出来。