我有一个由两个不同用户使用的页面。如果登录的用户是'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'保存'时,'隐藏'文本框的值将变为空,但在填充其他控件时,此字段也已填充。某种程度上,价值变得“在保存它的时候”
为什么会这样?什么是最好的解决方案/解决方案?
答案 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风格代码块。