У меня был набор страниц ASPX, в которых каждая страница имела разные заголовки, но я хочу указать заголовок по умолчанию для страниц, у которых нет заголовка. Заголовок по умолчанию должен быть настраиваемым.
как динамически изменить заголовок страницы aspx при загрузке страницы
Ответы (6)
Если это классический ASP.NET (не MVC) и вы используете MasterPage
, вы можете установить заголовок по умолчанию в событии Page_Load
в MasterPage
:
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Page.Title))
{
Page.Title = ConfigurationManager.AppSettings["DefaultTitle"]; //title saved in web.config
}
}
Ты можешь это сделать:
Установите заголовок aspx примерно так
<HEAD>
<TITLE ID=CaptionHere RUNAT="server"></TITLE>
</HEAD>
И в коде поместите это внутри события загрузки страницы:
if(!IsPostBack)
{
myCaption.InnerHtml = "Hope this works!"
}
Я надеюсь, что это поможет вам
У меня была похожая проблема, и ни одно из этих решений не помогло мне. Проблема возникает из-за срабатывания событий управления порядком для страницы. В моем случае у меня был некоторый код, который должен был быть в событии Page_load (это было потому, что это первое событие, с которым у нас есть объект Request для работы). Этот код также необходимо было запустить, прежде чем можно будет установить заголовок. Другие страницы на моем сайте могли просто установить желаемый заголовок на странице Ctor, но поскольку эта страница должна была сначала запросить объект ответа для получения информации, это было проблемой. Проблема заключается в том, что главная страница уже создала раздел заголовка страницы к тому моменту, когда мы доходим до события Page_load, и я не хотел, чтобы на моей главной странице был мусор, который требовался только для одной страницы на моем сайте. Мой простой хак для решения этой проблемы заключался в том, чтобы вставить немного встроенного javascript в часть содержимого страницы:
<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>
После этого вы можете установить заголовок в событии Page_Load, и он будет установлен, как только эта строка кода будет загружена. Конечно, на моем сайте уже есть требование JS, поэтому, если вы пытаетесь избежать этого, то это не сработает для вас.
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;
}
это полезно
В коде главной страницы вы можете установить [this.Title = "Whatever";]
или указать заголовок по умолчанию в HTML.