2012-08-17 114 views
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'保存','隱藏'文本框的值是空的,雖然在其他控件填充時,該字段也被填充。不知何故,這些值變成了''在節省它的點上

爲什麼會發生這種情況?什麼是最好的解決方案/解決這個問題?

+0

請問您可以發佈實際標記嗎?你發佈的內容無效。 – Oded 2012-08-17 13:29:42

+0

糾正你的代碼片段! – 2012-08-17 13:30:29

+0

thiks爲..我一直在嘗試自己做! – user1191463 2012-08-17 13:32:16

回答

1

而不是使用渲染塊,你有沒有想過在代碼中設置可見性?

+0

我希望這樣做..但是這是一個已經存在了很長時間的應用程序,並且有太多的控件和塊這樣有點複雜。但是,這個問題發生,因爲html塊是這樣呈現? – user1191463 2012-08-17 14:33:33

+0

可能不是 - 假設*發生的事情是,當您的If語句的計算結果爲true時,該塊出現在頁面中。當它是假的時候,它不應該被渲染。 – Tim 2012-08-17 14:38:35

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; 

或使用速記運營商??

+0

我建議使用'PlaceHolder'而不是面板,因爲面板會生成'div'標記並且不會生效HTML – CoderMarkus 2012-08-17 15:09:37

+0

即使可見性設置爲false,文本框也不會保留其值。不,我沒有手動清除它。 – user1191463 2012-08-17 15:15:01

+0

@ user1191463你有沒有像'if(!Page.IsPostBack())''在'Page_load' – 2012-08-20 06:56:33

0

一個快速和骯髒的解決辦法是明確地保存該控件的值到ViewState中或會話和手動重新填充它。該問題可能源於頁面上所有經典的ASP樣式代碼塊。

+0

'除非,我做一些愚蠢的事 - 即使我刪除了html代碼塊並使用visibility屬性控制。該值仍然變成空白! – user1191463 2012-08-17 15:17:51

+0

這可能是自定義控件中的問題。 cc1:TextBoxId控件代碼中是否存在可能導致問題的任何內容? – CoderMarkus 2012-08-17 15:20:11

+0

不應該有。讓我試試一個asp.net文本框,並更新 – user1191463 2012-08-17 15:27:41