以下是我的内容页面和母版页中的代码:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<%=Model.Title %>
</asp:Content>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /> - WebsiteName</title>
这适用于我,除非有时内容页面没有标题。因此页面标题最终是“-Website”而不是“Website”。
我应该用这个替换上面的内容还是有更好的方法?
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
- <%=Model.Title %> //downside: remember to append "dash" inside every single view.
</asp:Content>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /> WebsiteName</title>
答案 0 :(得分:1)
第一个版本已关闭,只需添加一点逻辑来检查是否有副标题:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
<%=!string.IsNullOrEmpty(Model.Title) ? Model.Title + " - " : "" %>
</asp:Content>
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />WebsiteName</title>
答案 1 :(得分:0)
据我所知,这可能是编写继承自System.Web.UI.WebControls.ContentPlaceHolder
类的自定义Web控件的最佳方法。为了使其尽可能通用(因此您可以在Web上发布),您可以添加三个附加属性:
string Prefix { get; set; }
string Suffix { get; set; }
bool AddOnEmpty { get; set; }
这将使它非常实用。您可以将内容放在括号内,添加破折号,分号等。布尔属性定义是否应添加前缀和后缀,即使没有内容。
在您的情况下,母版页页面上的控件如下所示:
<title>
Web site name
<asp:TitlePlaceHolder ID="TitleContent" runat="server"
Prefix="- "
AddOnEmpty="false" />
</title>
但你可以很容易地做出类似的事情:
<title>
Web site name
<asp:TitlePlaceHolder ID="TitleContent" runat="server"
Prefix="["
Suffix="]"
AddOnEmpty="false" />
</title>
或类似。