保存隐藏字段中的值



我有一个页面被两个不同的用户使用。如果登录用户是"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 代码,此字段保持隐藏状态。单击页面上的保存按钮时,保存方法不会尝试区分用户 1 和用户 2,而是从所有控件中提取值并保存。

我的问题是当user2"保存"时,"隐藏"文本框的值变为空,尽管在填充其他控件时,该字段也被填充。不知何故,值在保存它时变成了"

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

与其使用渲染块,你有没有想过在代码中设置可见性?

<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;

或使用速记运算符??

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

最新更新