2013-04-11 18 views
3

我正在客戶端的DotNetNuke網站上遠程工作,擴展了現有的HTML模板。客戶已經要求這些新內容必須隱藏,直到他們審覈完畢。僅向使用<% %>或同等產品的管理員(其他人)僅顯示.ascx模板的HTML部分

有沒有一種方法可以隱藏部分模板的HTML並只顯示給管理員?

我非常期待這樣的事情:

<div> 
    <% Admin Only %> 
     <p>Only administrators can see this!</p> 
    <% End Admin Only %> 
    <p>Everyone can see this</p> 
</div> 

(我沒有很大的熟悉ASP.NET,所以我不知道什麼是<%%>符號被調用。)

這可能嗎?

回答

5

創建一個方法並使用ASP.NET內聯表達式調用此方法,如下所示。

IF語言是VB

<script runat="server"> 
    Public Function IsUserAdmin() As Boolean 
     Dim uinfo As DotNetNuke.Entities.Users.UserInfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo() 
     If uinfo.UserID <> -1 Then 
      If uinfo.IsInRole(DotNetNuke.Entities.Portals.PortalSettings.Current.AdministratorRoleName) Then 
       Return True 
      Else 
       Return False 
      End If 
     Else 
      Return False 
     End If 

    End Function 
</script> 

和ASP.NET內聯表達式是

<% If IsUserAdmin() Then%> 
     <p>Only administrators can see this!</p> 
    <% End If%> 

IF語言被C#

<script runat="server"> 
    public bool IsUserAdmin() 
    { 
     DotNetNuke.Entities.Users.UserInfo uinfo = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo(); 
     if (uinfo.UserID != -1) 
     { 
      if (uinfo.IsInRole(DotNetNuke.Entities.Portals.PortalSettings.Current.AdministratorRoleName)) 
       return true; 
      else 
       return false; 
     } 
     else 
     { 
      return false; 
     } 

    } 
</script> 

和ASP.NET內聯表達式是

<% if (IsUserAdmin()) %> 
    <% 
     { %> 
     <p>Only administrators can see this!</p> 
    <% } %> 
+0

This throw an error:'無法加載皮膚:/Portals/.../index.ascx,錯誤:C:\ inetpub \ wwwroot \ ... \ index.ascx(144):錯誤BC30205:預期的語句結束。144行是'public bool IsUserAdmin()'。 – 2013-04-12 08:46:09

+0

@James什麼是您的控制語言c#或vb – Gajendra 2013-04-12 09:16:00

+0

我認爲它應該是C#,因爲我工作的公司通常使用C#,但我不完全確定。有沒有一種方法可以找到,而無需訪問除.ascx模板文件之外的其他任何內容? – 2013-04-12 09:38:48

1

試試這個,更換必要確定角色成員和內容是否代碼審查:

<div> 
    <% if (Page.User.IsInRole("administrator") || objContent.IsReviewed) 
    {%> 
     <p>Only administrators can see this!</p> 
    <% }%> 
    <p>Everyone can see this</p> 
</div> 

其實,DNN是VB嗎?如果是這樣的話:

<div> 
    <% If Page.User.IsInRole("administrator") Or objContent.IsReviewed Then%> 
     <p>Only administrators can see this!</p> 
    <% End If%> 
    <p>Everyone can see this</p> 
</div> 
+0

C#解決方案打破了頁面,所以它必須是VB。 VB解決方案沒有任何改變 - 無論我是否登錄,我仍然能夠看到它。 – 2013-04-11 11:49:42

+0

是的,以爲它是VB。你確定你已經註銷並且內容沒有被「審覈」嗎?我的測試應用程序確實隱藏了僅管理員信息。 – Netricity 2013-04-11 12:33:57

+0

我試着用'Page.User.IsInRole(「administrator」)',註銷時(並在清除cookie後)內容仍然顯示。 – 2013-04-11 12:38:15

相關問題