Вообразите приложение ASP.NET с несколькими темами определенным в нем. Как я могу изменить тему общего приложения (не только единственная страница) динамично. Я знаю, что это возможно через <pages Theme="Themename" />
в web.config
. Но я хочу смочь изменить его динамично. Как shpuld я делаю это?
Заранее спасибо
Вы можете сделать это на Page_PreInit
, как описано здесь :
protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
держите общую базовую страницу для всех ваших asp.net страниц и изменяйте свойство theme между любыми событиями после PreInit
или до Page_Load
в базовой странице. Это заставит каждую страницу применять эту тему. Как в этом примере, сделайте MyPage базовой страницей для всех ваших asp.net страниц.
public class MyPage : System.Web.UI.Page
{
/// <summary>
/// Initializes a new instance of the Page class.
/// </summary>
public Page()
{
this.Init += new EventHandler(this.Page_Init);
}
private void Page_Init(object sender, EventArgs e)
{
try
{
this.Theme = "YourTheme"; // It can also come from AppSettings.
}
catch
{
//handle the situation gracefully.
}
}
}
//in your asp.net page code-behind
public partial class contact : MyPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}