0

我有一个由两个不同用户使用的页面。如果登录用户是“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 代码,这一字段仍然隐藏。当点击页面上的保存按钮时,保存方法不会尝试区分user1和user2,而是从所有控件中提取值并保存。

我的问题是当 user2 'saves' 时,'hidden' 文本框的值变成了 null,尽管在填充其他控件时,这个字段也被填充了。不知何故,值在保存时变成了“”

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

4

3 回答 3

1

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

于 2012-08-17T13:46:34.460 回答
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;

或使用速记运算符??

于 2012-08-17T15:03:32.230 回答
0

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

于 2012-08-17T15:11:33.847 回答