Ahoj.
Potřeboval bych po stisknutí tlačítka změnit téma. Píše mi to ale chybu, že téma lze změnit pouze při nahrávání webu v události Page_PreInit.
Prosím nevíte jak na to, abych téma změnil po stisknutí tlačítkaa?
Díky
Fórum › .NET
Page.Theme a jeho změna po stisknutí tlačítka
To Anonymní uživatel : A co se zkusit řídit tou chybou?
BTW: ASP.NET themes nejsou nejlepší cestou ke skinování aplikace (tedy v případě, že se nejedná pouze o změnu CSS, obrázků, apod).
Jedná se pouze o změnu CSS souboru a obrázků...
Řídit se chybou je dobrý nápad.... Zkoušel jsem, ale nějak nevím jak...
To Anonymní uživatel : Naposled, co tu někomu dávám kód.
protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
Prostě odchytím tu událost a změním skin.Díky
Mám master page, ve které si uživatel může vybrat některé z témat. Výběr mám udělaný v DropDownList. Vedle toho mám tlačítko.
Když uživatel stitskne tlačítko, změní se vzhled.
Na událost stisknutí tlačítka mám tento kód:
Session.Add("ThemeName", this.ThemeList.Text);
Dále mám content page Default.aspx
a v ní kód:
protected void Page_PreInit(object sender, EventArgs e)
{
object b = Session["ThemeName"];
string s = (string)b;
Page.Theme = s;
}
bohužel to nějak nefunguje. Je to první webová aplikace kterou v ASP.NET dělám a v tomto případě bych potřeboval trochu postrčit.
Díky
To Anonymní uživatel : NullReferenceException? Pak už víš, kde je chyba -> viz. jiná diskuze, hádám, že jsi tentýž anonym.
Asi na tom už nechám nervy... Od včerejška se snažím to rozchodit a stále nic....
Kde přesně je chyba??? v Session, v proměné, něbo někde úplně jine???
To Anonymní uživatel : Já nevim. Musíš toho napsat víc.
Takže v master page mám:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.IO;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ThemeButton_Click(object sender, EventArgs e)
{
Session.Add("ThemeName", this.ThemeList.Text);
}
- po stisknutí tlačítka se vybere z DropDownLisu název tématu ( tedy to this.ThemeList.Text; ) a uloží se do session ThemeName
a potom mám stránku Default.aspx
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
object b = new Object();
b = Session["ThemeName"];
string s = (string)b;
Page.Theme = s;
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
fakt už nevím co s tím mám dělat. Podle mě jsou session dobře, ale bordel je v těch proměných. Zkoušel jsem od stringu až po object a bez výsledku...
Když to spustím, chybu to nehlásí, ale žádné téma se taky neimportuje....
To Anonymní uživatel : Tebou uvedený příklad je plně funkční, ale je tam mnoho nedostatků. Zamysli se nad svým postupem a taky nad kódem. Je vidět, že ti chybí teorie (mnoho lidí si myslí, že to jde i bez ní, ale opak je pravdou).
Tak proč mi to tedy nefunguje??? Na co bych se měl zaměřit???
Teorie mi opravdu chybí. Tohle je první web, který dělám v ASP.NEt
To Anonymní uživatel : Je jedno, zda je to první nebo padesátý web. Bez teorie je to stále totéž. Pokud ti to nehází žádnou výjimku, tak se zkus podívat, co se tam vlastně děje, jstli se načte skin (případně jakej a jestli není stejnej jako ten předchozí). Musíš si poradit sám.
No, sám už se s tím zkouším poprat 2 dny. Skin se mi vůbec do webu nenačte
To Anonymní uživatel : No, tak si pusť debugger a odkrokuj si jednotlivý části kódu, ať víš, co se děje nebo neděje. Já tě tady fakt nebudu vodit za ručičku.
Ještě bych chtěl požádat o radu, co se týká speciálních adresářů v ASP.NET. Neznáš prosím nějaký odkaz, kde se píše, který k čemu přesně slouží???
Zkoušel jsem google slovo ASP.NET directory ale nic pořádného jsem nenašel.
A ještě, mám chybovou stránku ( co jsem sám vytvořil - 404 ) a chtěl bych ji dát do aplikace. Vím že se to dává přes web.config, ale nevím co a nevím kam..
Každý někdy začíná....
To Anonymní uživatel : CustomErrors si najdi na googlu. Ty speciální adresáře rovněž (nauč se najít správnou kombinaci klíčových slov) http://www.google.com/search?hl=cs&client=opera&rls=cs&hs=0xF&q=ASP.NET+special+directories&start=10&sa=N nebo si prostě přelož jejich názvy.
BTW: Ano, každý jednou začíná, ale jde o to jakým způsobem.
To Anonymní uživatel [#91091]: CustomErrors si najdi na googlu. Ty speciální adresáře rovněž (nauč se najít správnou kombinaci klíčových slov) link (v novém okně ) nebo si prostě přelož jejich názvy.
BTW: Ano, každý jednou začíná, ale jde o to jakým způsobem.
Díky
Takže už z tebe nic nedostanu ;-)
Já už nemám, co bych k tomu řekl. Když nevidím problém, tak nemohu hledat jeho řešení.
No, problém tam být musí, když to nepracuje tak jak by mělo...
Téma to nemění...
To Anonymní uživatel : Problém tam je určitě, když ti to nefunguje, ale já ho nevidím (kdyby to házelo nějakou výjimku, případně kdyby jsi objevil něco v debuggeru, tak možná).
BTW: Máš zapnuté session proměnné?
jako v prohlížeči?
To Anonymní uživatel : Ne, těsně vedle. Session proměnné jsou uložené na serveru. Ale jako odpověď to stačí.
I mistr tesař se někdy utne :-)
Tet se nabízí otázka jak zapnout session na serveru :-D
To Anonymní uživatel : No pravděpodobně jsou zapnuté, jinak by to skončilo výjimkou (mám takovej pocit). V každým případě se podívej, jestli ten objekt získanej ze session není náhodou null (v tomto případě nedojde k výjimce).
Byly shodou okolností vypnuté. Ve web.config jsem je zapnul a frčí to.
Ještě se zeptám, je dobré k tomuto účelu, tj ukládání nastavení tématu používat session?
nebo se zeptám ještě jinak, nevadí, když budu k tomuto účelu používat session?
To Anonymní uživatel : Pokud jde o dočasnou volbu (v rámci tvé aplikace), tak to lze použít.
Díky
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odchycení stisknutí tlačítka — založil Jiří Sokolovský
Konzole, akce po stisknutí tlačítka [x] — založil Jouker
C# - stisknutí tlačítka jako proměná — založil Ormy
Formular reagujici bez stisknuti tlacitka — založil Iveta
Změna nody v XML pomocí jeho id — založil JiriVavru
Moderátoři diskuze