มีหลายวิธีในการเปลี่ยนสกิน วิธีที่ง่ายที่สุดคือการสลับหน้า CSS และโดยปกติแล้ว CSS จะถูกเขียนในไฟล์ CSS ภายนอก จากนั้นการสลับ css จะเป็นการเปลี่ยนเส้นทางของลิงก์ href ใน html ฉันค้นหาออนไลน์ โดยทั่วไปมีสองวิธี:
1. วางตัวควบคุมผู้ถือบนเพจ จากนั้นเขียนลิงก์ css สไตล์ของผู้ใช้ปัจจุบันลงในเพจโดยทางโปรแกรม
2. ตั้งค่าสไตล์ CSS บนแต่ละตัวควบคุมผ่านกลไกการสะท้อน
สองวิธีข้างต้นค่อนข้างลำบาก
ขั้นแรกต้องวางตัวควบคุมผู้ถือในแต่ละหน้า วิธีการที่คล้ายกันคือการเพิ่ม runat=server ให้กับแท็กลิงก์ หากมีหน้ามากเกินไปจะลำบากมากขึ้น
ไม่จำเป็นต้องพิจารณาอย่างที่สอง มีปัญหามากมายเกี่ยวกับประสิทธิภาพการเขียนโปรแกรมประสิทธิภาพ
ฉันจำได้ว่าตอนที่ฉันเรียนรู้ DNN ฉันพบวิธีแก้ไขที่อยู่การดำเนินการเริ่มต้นในแบบฟอร์ม โปรดดูโดยตรง ไม่เลว:
แทนที่เหตุการณ์ Render โดยตรง
ป้องกันแทนที่เป็นโมฆะ Render (ตัวเขียน System.Web.UI.HtmlTextWriter)
-
StringWriter sw = StringWriter ใหม่ ();
HtmlTextWriter htmlWriter = ใหม่ HtmlTextWriter(sw);
base.Render(htmlWriter);
//สไตล์ css ที่เลือกโดยผู้ใช้ปัจจุบัน
string css = "<link href="css url" rel="stylesheet" type="text/css">" ;
string html = sw.ToString() ;
int startPoint = html.IndexOf("</head>", StringComparison.CurrentCultureIgnoreCase);
ถ้า (จุดเริ่มต้น > 0)
-
html = html.Insert(startPoint, css);
}
นักเขียน. เขียน (html);
-
ใส่สิ่งนี้ลงในคลาสฐาน PageBase ของแต่ละเพจ นั่นจะสะดวกกว่ามาก
แน่นอน หากคุณไม่ต้องการให้ทุกเพจสืบทอดคลาสพื้นฐานที่กำหนดเอง คุณสามารถเขียนมันใน HttpModule ได้เช่นกัน นอกจากนี้ยังสะดวกมาก
เขียนไว้ในที่เดียวและจะมีประโยชน์ทุกหน้า
http://www.cnblogs.com/kwklover/archive/2007/01/03/610822.html