2011-07-29 83 views
0

我試圖通過在代碼後面調用一個函數直接從頁面中的代碼設置具有runat ='server'屬性的div的Visible屬性,但它似乎代碼完全沒有被服務器評估。 的代碼看起來像這樣用內聯標記設置div的可見屬性

<div id="mydiv" runat="server" Visible='<%# IsInRole("User") %>'> 

其中「IsInRole」是返回一個布爾值頁面上的保護功能。

非常感謝

發現其解決方法:

<% if (IsInRole("Administrator")){%> 
    <div id="mydiv">Admin content here</div> 
<% }%> 
+0

這可能是冷靜,如果人們可以離開他們爲什麼downvote問題評論...特別是具有當它是新的人,當它被寫做downvoting時... –

回答

2

由於DIV是RUNAT = 「服務器」,你應該能夠從代碼中訪問它背後的頁面加載是這樣的:

mydiv .Visible = IsInRole(User);

(如果IsInRole返回true或false)

+0

謝謝但我不想爲這個屬性使用代碼隱藏,因爲當我需要更改Role變量的值時,我可以在不重新編譯項目的情況下執行該操作,而只是在頁面中更改它。 – Edika

+0

asp.net應用程序不會需要編譯..代碼隱藏會在運行時自動編譯@Edika –

+0

這是不正確的。帶有代碼的Web應用程序需要在部署之前進行編譯。後面的代碼被編譯成與頁面一起部署的程序集。 @Nitinjs – Edika

1

<div id="mydiv" runat="server" Visible='<%# IsInRole("User") %>'> 

#表示數據綁定,其內容將只在一瞬間綁定完成後進行評估。首先,確保您的控件在頁面執行期間是數據綁定的,其次,您的值在此時正確評估。

,否則你可能更喜歡

<div id="mydiv" runat="server" Visible='<%= IsInRole("User") %>'> 

如果您espression會在頁面的每次執行進行評估。

看到this blog進一步的細節

+0

這是不允許在服務器標記,謝謝。我找到了另一種解決方案 – Edika

相關問題