asp.net避免在标题中重复代码只是为了拥有不同的页面

时间:2009-08-08 12:50:44

标签: asp.net master

我有以下目标:

我在我的网站上有一个顶级菜单链接列表

主页*链接*报价*照片

唯一的区别是,无论何时您在特定页面上,我希望该页面只是文本(不是href链接)而其他页面是链接(以显示这是您所在的页面):< / p>

我得到了这个工作,但这似乎非常糟糕的做法,我正在寻找一个更好的方法:

在我的母版页中,我有以下内容:

 <asp:ContentPlaceHolder runat="server" ID="TopMenuLinks">
 </asp:ContentPlaceHolder>

在每个单独的页面中,我有以下内容(这是Family Tree Example):

Family Tree看起来像这样:

<asp:Content ID="Content3" ContentPlaceHolderID="TopMenuLinks" runat="server">
 <a href="http://xxx/albums.aspx">Photos</a> &nbsp;&nbsp;-&nbsp;
 <a href="http://xxx/globe.aspx">Travel</a> &nbsp;&nbsp;-                
 Family Tree
 <a href="http://xxx/wiki.aspx"><spanstyle="color:"#000088">Wiki</span></a>&nbsp;&nbsp;-
 <a href="http://xxx/blog.aspx"><span style="color:"#000088">Baby Blog</span></a>
</asp:Content>

照片看起来像这样:

<asp:Content ID="Content3" ContentPlaceHolderID="TopMenuLinks" runat="server">
 Photos &nbsp;&nbsp;-&nbsp;
 <a href="http://xxx/globe.aspx">Travel</a> &nbsp;&nbsp;-                
 <a href="http://xxx/globe.aspx">Family Tree</a> &nbsp;&nbsp;-                
 <a href="http://xxx/wiki.aspx"><spanstyle="color:"#000088">Wiki</span></a>&nbsp;&nbsp;-
 <a href="http://xxx/blog.aspx"><span style="color:"#000088">Baby Blog</span></a>
</asp:Content>

正如您所看到的,在每个页面中,我基本上都有重复的代码,该特定页面不作为链接。

有没有更简洁的方法可以做到这一点,而不会在我的每个页面上复制大量的代码?

我的方式

2 个答案:

答案 0 :(得分:2)

我使用ASP:Hyperlink控件使用母版页做了同样的事情。在母版页背后的代码中,如果NavigateUrl与子页面的位置匹配,我有代码将NavigateUrl设置为空字符串。

它会产生您正在寻找的效果。

答案 1 :(得分:0)

为公共代码创建UserControl并添加对每个页面的引用。您可以在控件上公开Bool属性,以呈现超链接或纯文本,并在每个页面上根据需要设置该属性。