保存隐藏字段的值

时间:2012-08-17 13:28:04

标签: c# asp.net .net html vb.net

我有一个由两个不同用户使用的页面。如果登录的用户是'user1',则显示所有8个字段,如果其'user2',则显示8个字段中的7个。这是我用来隐藏user2中的一个字段的html代码。

 <%If User1 Then%>   
   <tr>
      <td>
         <cc1:Label ID="lblTextBox1" runat="server" />
         <cc1:TextBoxId ID="txtTextBox1" runat="server" LabelId="lblTextBox1" Columns="20" />
     </td>    
  </tr>
<%End If%>

现在,当aspx.vb页面加载时,它会将所有这些控件一起填充,但是由于上面的html代码,这一个字段仍然是隐藏的。单击页面上的保存按钮时,save方法不会尝试区分user1和user2,而是从所有控件中提取值并保存。

我的问题是当user2'保存'时,'隐藏'文本框的值将变为空,但在填充其他控件时,此字段也已填充。某种程度上,价值变得“在保存它的时候”

为什么会这样?什么是最好的解决方案/解决方案?

3 个答案:

答案 0 :(得分:1)

您是否考虑过在代码中设置可见性,而不是使用渲染块?

答案 1 :(得分:0)

<asp:Panel id="pnlForUser2" runat="server">
<tr>
    <td>
        <cc1:Label ID="lblTextBox1" runat="server" />
        <cc1:TextBoxId ID="txtTextBox1" runat="server" LabelId="lblTextBox1" Columns="20" />
    </td>    
</tr>
</asp:Panel>

并在后面的代码中:

if(Page.User.Identity.Name.Equals("user2"))
    pnlForUser2.Visible = true;

或使用速记运算符??

答案 2 :(得分:0)

快速而肮脏的解决方法是将该控件的值显式保存到ViewState或Session中并手动重新填充它。这个问题可能源于页面上所有经典的ASP风格代码块。