1

我有一个文本框(txtShipmentDate),其中填充了从 .aspx 文件中的弹出日历中选择的值。

<tr>
    <td align="right" valign="middle" width="125">
       Shipment Date:
    </td>                                       
    <td align="left" valign="middle">
       <asp:TextBox Runat="server" ReadOnly="true" Width="75" 
           ID="txtShipmentDate" CssClass="textbox"></asp:TextBox>
       <a title="Select Ship Date" onclick="if(self.gfPop)gfPop.fPopCalendar(document.forms[0].txtShipmentDate);return false;"
href="javascript:void(0)">
       <IMG class="PopcalTrigger" height="19" alt="" src="/TOrders/calendarxp/themes/xp/calbtn.gif" width="34" align="absMiddle" border="0"></a>
    </td>
</tr>

文本框被正确填充。

但是当我尝试在单击提交按钮时访问文本框中的值时,使用

     If txtShipmentDate.Text.Length > 0 Then oShippingDate = Convert.ToDateTime(txtShipmentDate.Text)

texbox 中的值是空白的。在提交之前没有其他任何事情发生。所有其他文本框都保留它们的值。

4

1 回答 1

1

由于安全预防措施,ReadOnly 字段在回发时不会保留其值。如果您需要阻止用户输入此字段并仍将值回传 - 不要设置文本框的 ReadOnly 属性。而是通过 CSS 给它一个只读外观,然后通过类似的方式阻止用户输入

txtShipmentDate.Attributes("onclick") = "this.blur();"

(您可能还想处理“onselect”和“onpaste”)。这种方式可以防止用户输入,从而为用户提供完整的 ReadOnly 字段外观,并且仍然会回发值。

于 2013-06-25T17:57:55.830 回答