2012-06-07 58 views
1

我有一个只读的文本框,它有一个必需的验证程序附加到它。此文本框只能使用其他控件进行填充。Asp.Net验证器和只读文本框

问题是,只读文本框不会存储它们的值并在回发时将其恢复,所以这会导致验证器在每次回发后都会出现问题。我知道有办法强制它存储价值,但我实际上不希望它存储它。

反正有过去吗?

编辑:这是产生这些问题的控制:

  <li class="fakeUploadLi"> 
       <asp:Label CssClass="lbl" ID="lb" runat="server" Text="Image:"></asp:Label> 
       <div class="fakeupload"> 
        <asp:TextBox runat="server" ID="tbFakeupload" Enabled="false" /> 
       </div> 
       <asp:FileUpload ID="fuImage" runat="server" CssClass="fileUpload" onchange="this.form.ctl00$cphAdmin$tbFakeupload.value = this.value;" /> 
       <asp:RequiredFieldValidator ValidationGroup="newImage" runat="server" ControlToValidate="tbFakeupload" 
        ErrorMessage="Please select an image first.">*</asp:RequiredFieldValidator> 
      </li> 

它是在原来的文件上传HTML控件覆盖。请注意,如果我关闭只读(或启用,尝试两种)问题消失。

+0

你为什么不尝试tbFakeupload'的'值存储在隐藏'和field'在'PostBack'后恢复它永远不会失去它的价值,验证器不会触发 –

回答

3

试试这个:

protected void Page_Load(object sender, EventArgs e) 
{ 
TextBox1.Attributes.Add("readonly", "readonly"); 
} 

http://www.codeproject.com/Articles/33649/ViewState-and-Readonly-Property-of-Textbox

+0

你读过我的问题了吗?我说我不想存储价值。我已经知道这个诀窍,我希望它不会在每个帖子后面出现。 – TheGateKeeper

+0

然后可能会添加一些更多的信息,你在做什么,在什么情况下你的文本字段位于,我已经用验证等自己复制你的问题,它不会为我启动。 – Thousand

+0

只要我关闭只读,我的问题就会消失。真奇怪。我在问题中添加了控件的html。 – TheGateKeeper

0

尝试将readonly属性更改为Enabled = "false"