Miałem zestaw stron ASPX, w których każda strona miała inne tytuły, ale chcę umieścić domyślny tytuł dla stron, które nie mają tytułu. Domyślny tytuł musi być konfigurowalny.jak dynamicznie zmienić tytuł strony aspx na ładowanie strony
Odpowiedz
Jeśli jest to klasyczny ASP.NET (nie MVC) i używasz MasterPage
następnie można ustawić domyślny tytuł Page_Load
imprezy w MasterPage
:
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Page.Title))
{
Page.Title = ConfigurationManager.AppSettings["DefaultTitle"]; //title saved in web.config
}
}
Za pomocą kodu strony głównej można ustawić [this.Title = "Whatever";]
lub określić domyślny tytuł w kodzie HTML.
Można to zrobić:
Ustawianie nagłówek coś aspx jak ten
<HEAD>
<TITLE ID=CaptionHere RUNAT="server"></TITLE>
</HEAD>
I w kodzie za to umieścić wewnątrz przypadku ładowania strony:
if(!IsPostBack)
{
myCaption.InnerHtml = "Hope this works!"
}
Mam nadzieję, że to pomoże Ci
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;
}
Jest to pomocne
miałem podobny problem i żaden z tych rozwiązań nie działa dobrze dla mnie. Problem wynika z tego, że zdarzenia kontrolowania porządku są uruchamiane dla strony. W moim przypadku miałem kod, który musiał znajdować się w zdarzeniu Page_load (ponieważ było to pierwsze zdarzenie, w którym mamy obiekt żądania, z którym chcemy pracować). Ten kod również musiał zostać uruchomiony, zanim można było ustawić tytuł. Inne strony w mojej witrynie były w stanie po prostu ustawić pożądany tytuł na stronie Ctor, ale ponieważ ta strona musiała najpierw przesłuchać obiekt odpowiedzi w celu uzyskania informacji, był to problem. Problem polega na tym, że strona główna już utworzyła sekcję nagłówka strony, zanim dotarliśmy do zdarzenia Page_load i nie chciałem śmieci na mojej stronie wzorcowej, która była wymagana tylko dla jednej strony w mojej witrynie. Mój prosty siekać do pokonania tego problemu było włożyć trochę javascript inline w części zawartości strony:
<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>
Mając to na miejscu, jesteś wolny, aby ustawić tytuł w przypadku Page_Load i to będzie ustawić, gdy tylko ta linia kodu zostanie pobrana. Oczywiście, moja witryna ma już wymaganie JS, więc jeśli próbujesz tego uniknąć, to nie zadziała dla ciebie.