Ich hatte ASPX-Seiten, in denen jede Seite unterschiedliche Titel hatte, aber ich möchte Standardtitel für Seiten, die keinen Titel haben, setzen. Der Standardtitel muss konfigurierbar sein.Wie man den Titel der ASPX-Seite dynamisch beim Laden der Seite ändert
Antwort
Wenn das klassische ASP.NET (nicht MVC) und Sie verwenden MasterPage
dann können Sie Standardtitel in Page_Load
Ereignis in MasterPage
gesetzt:
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Page.Title))
{
Page.Title = ConfigurationManager.AppSettings["DefaultTitle"]; //title saved in web.config
}
}
In Ihrem Master-Seitencode hinter könnten Sie [this.Title = "Whatever";]
setzen oder Sie könnten auch den Standardtitel im HTML angeben.
Sie können dies tun:
Stellen Sie den aspx Header so etwas wie dies
<HEAD>
<TITLE ID=CaptionHere RUNAT="server"></TITLE>
</HEAD>
Und hinter im Code setzten diese in dem Seitenladeereignis:
if(!IsPostBack)
{
myCaption.InnerHtml = "Hope this works!"
}
Ich hoffe, das Sie
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = title();
}
private string title()
{
SqlConnection con = new SqlConnection(cs);
string cmdstr = "select * from title where id = 2";
SqlCommand cmd = new SqlCommand(cmdstr, con);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
con.Open();
da.Fill(dt);
con.Close();
if (dt.Rows.Count > 0)
{
string title = dt.Rows[0]["title"].ToString();
}
return title;
}
Dieses hilfreich
Ich hatte ein ähnliches Problem helfen und keine dieser Lösungen gut für mich gearbeitet. Das Problem rührt von den Auftragskontrollereignissen für eine Seite her. In meinem Fall hatte ich Code, der im Page_load-Ereignis enthalten sein musste (weil das das erste Ereignis war, mit dem ein Request-Objekt arbeiten konnte). Dieser Code musste auch ausgeführt werden, bevor der Titel festgelegt werden konnte. Andere Seiten in meiner Site konnten einfach den gewünschten Titel in der Seite Ctor setzen, aber da diese Seite zuerst das Antwortobjekt nach Informationen abfragen musste, war das ein Problem. Das Problem dabei ist, dass die Masterseite den Seitenkopfbereich bereits erstellt hat, als wir zum Page_load-Event kamen und ich wollte keinen Müll auf meiner Masterseite, der nur für eine einzelne Seite auf meiner Site benötigt wurde. Meine einfache Hack um dieses Problem zu überwinden, war ein wenig Javascript inline im Inhaltsteil der Seite einzufügen:
<asp:Content ID=BodyContent ContentPlaceHolderID=MainContent RunAt=Server>
<script type="text/javascript">
document.title='<%=Title%>';
</script>
... the rest of the content page goes here ...
</asp:Content>
In diesem Ort, Sie sind frei, die Titel in dem Ereignis Page Load setzen und es wird eingestellt werden, sobald diese Codezeile heruntergeladen wurde. Natürlich hat meine Website bereits eine JS-Anforderung. Wenn Sie also versuchen, dies zu vermeiden, wird dies nicht für Sie funktionieren.