2009-11-11 5 views
-1

중복 :
Hiding a link in asp.net가 asp.net에서 링크를 숨기기


안녕하세요 이있는 masterpage의 CS 파일 ... 내가 필요

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

namespace LevoContactManagement 
{ 
    public partial class Default : System.Web.UI.MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      BasePage page = (BasePage)Page; 

      if (page.CurrentUser != null) 
      { 
       lblCurrentUser.Text = "<strong>" + page.CurrentUser.FullName + "</strong> - " + page.CurrentUser.CompanyName; 

       if ((Session["CCFUser"] != null) && (bool.Parse(Session["CCFUser"].ToString()) == true)) 
       { 
        ctrlLinkBar.AddLink("Issues Management", "AllIssues.aspx"); 
       } 
       else 
       { 
        if (true) ctrlLinkBar.AddLink("Home", "Default.aspx"); 
        if (page.CurrentUser.Permissions.Issues()) ctrlLinkBar.AddLink("Issues Management", "AllIssues.aspx"); 
        if (page.CurrentUser.Permissions.Time()) ctrlLinkBar.AddLink("Time Management", "TimeEntryForm.aspx"); 
        if (page.CurrentUser.Permissions.Time()) ctrlLinkBar.AddLink("Time Filter", "TimeFilter.aspx"); 
        if (page.CurrentUser.Permissions.SVN() && !(this.Page is _Default)) ctrlLinkBar.AddLink("SVN", "SVN.aspx"); 
        if (true) ctrlLinkBar.AddLink("Profile", "ChangePassword.aspx"); 
        if (page.CurrentUser.Permissions.Administration()) ctrlLinkBar.AddLink("Administration", "Administration.aspx"); 
       } 

      } 
      else lnkLogout.Visible = false; 
     } 
     protected void lnkLogout_Click(object sender, EventArgs e) 
     { 
      Session.Abandon(); 
      FormsAuthentication.SignOut(); 
      Response.Redirect("Login.aspx"); 
     } 
    } 
} 

시간 필터 링크를 숨기려면 LinkBar 컨트롤의 CS 파일 내가 그것에 대해 이동 어떻게

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Text; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebControlLib 
{ 
    [ToolboxData("<{0}:LinkBar runat=server></{0}:LinkBar>")] 
    public class LinkBar : WebControl 
    { 
     struct Link 
     { 
      public string Title; 
      public string URL; 

      public override string ToString() 
      { 
       return "<a href='" + URL + "'>" + Title + "</a>"; 
      } 
     } 

     private bool m_bIsVertical = false; 
     private List<Link> m_Links = new List<Link>(); 

     public bool IsVertical 
     { 
      get 
      { 
       return m_bIsVertical; 
      } 
      set 
      { 
       m_bIsVertical = value; 
      } 
     } 

     public void Clear() 
     { 
      m_Links.Clear(); 
     } 
     public void AddLink(string Title, string URL) 
     { 
      Link lnk = new Link(); 

      lnk.Title = Title; 
      lnk.URL = URL; 

      m_Links.Add(lnk); 
     } 

     protected override void RenderContents(HtmlTextWriter output) 
     { 
      List<string> items = new List<string>(); 

      foreach (Link lnk in m_Links) 
       items.Add(lnk.ToString()); 

      string sep = IsVertical ? "</td></tr><tr><td>" : " | "; 

      output.Write(
@" 
<table width='100%' class='linkBar'> 
    <tr> 
     <td>" + string.Join(sep, items.ToArray()) + @"</td> 
    </tr> 
</table> 
"); 
     } 
    } 
} 

입니까? 다음과 같이 나는 master.designer.cs 파일을 변경 ->

public partial class Default { 
     protected System.Web.UI.HtmlControls.HtmlForm form1; 
     protected System.Web.UI.WebControls.Label lblCurrentUser; 
     protected System.Web.UI.WebControls.LinkButton lnkLogout; 
     public WebControlLib.LinkBar ctrlLinkBar; 
     public System.Web.UI.WebControls.ContentPlaceHolder LeftNav; 
     protected System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1; 
     protected System.Web.UI.WebControls.ContentPlaceHolder BodyContent; 
    } 

하지만 링크가 여전히 masterpage의 디자인보기에 표시되지 않으며, 따라서 내가 ID를 찾을 수 없습니다, 따라서 내가 그것을 숨길 캔트. 이것에 대한 대안은 무엇입니까?

답변

0

나는 당신이 TimeEntryForm.aspx에 대한 링크를 숨기는 것에 대해 이야기하고 있으며 제한된 상황에서만이를 수행하기를 원한다고 가정합니다. 그 이유는 라인을 생략하고 싶지 않기 때문입니다.

링크는 실제로 자체가 control이 아니므로 자체 ID가 없습니다. LinkBar 컨트롤에 속한 링크 목록의 멤버이며 LinkBar는 해당 링크를 화면에 렌더링합니다.

링크를 런타임에 LinkBar에 추가하면 Visual Studio의 디자인보기 미리보기에 표시되지 않으며 브라우저에서 페이지를 볼 때만 표시됩니다.

나는 LinkBar를 제거하고 단순한 HyperLink 컨트롤로 페이지에 컨트롤을 추가하는 것이 좋습니다. 원한다면 디자이너에서이 작업을 수행하십시오. 그럼 당신은 같은, 그 하이퍼 링크에 Visible 속성을 사용하여 뒤에 코드에서 각 링크의 표시 여부를 설정할 수 있습니다

hlTimeLink.Visible = page.CurrentUser.Permissions.Time(); 
+0

그래 그래서 내가 쓸 때 기본 masterPage = (기본값) this.Page.Master; masterPage.ctrlLinkBar.Visible = false; TimeEntryForm.aspx.cs의 Page_Load에 전체 컨트롤을 숨 깁니다. 컨트롤의 링크 단추 하나만 숨기려면 어떻게해야합니까? – Sophie

+0

괜찮아요. 건배! – Sophie

관련 문제