網站開發

          asp.net
          隨筆 - 30, 文章 - 0, 評論 - 9, 引用 - 0
          數據加載中……

          怎樣向xml文檔插入HTML標記

          CDATA 區段
                 因為網頁中要顯示HTML的源代碼。而在XML中,要實現這樣的功能,就必須使用CDATA標記。在CDATA標記中的信息被解析器原封不動地傳給應用程序,并且不解析該段信息中的任何控制標記。CDATA區域是由:![CDATA[”為開始標記,以“]]為結束標記。例如:例2中的源碼,除了![CDATA[”“]]符號,其余的內容解析器將原封不動地交給下游的應用程序,即使CDATA區域中的開始和結尾的空白以及換行字符等,都同樣會被轉交(注意CDATA是大寫的字符)。 

              如同你在第三章中學到的,你不能直接將(<)或(&)符號放置在元素內容中的字符數據里。要避開這個限制的一種方法是使用字符參照(& #60;或& #38;)或預先定義的普通實體參照(& lt;或& amp;),如同你在第六章中將學到的。然而,如果你需要加入多個(<)或(&)字符,使用這些參照將變得不合適且會讓資料變得難以閱讀。在這種情況下,將包含限制字符的文字放置在CDATA 區段中將會比較容易完成工作。
              CDATA 區段的類型
              CDATA 區段以字符「<![CDATA[」開始,并以「]]>」字符結束。在這兩個定義符號之間,你可以輸入任何字符(包括「<」或「&」),除了「]]>」之外。(因為,該字符會被解釋成CDATA區段的結束。)所有位在CDATA 區段中的字符都被視為元素字符數據的字義 (literal) 部分,而不是XML 標簽。
              下面是一個合法CDATA 區段的范例:
          <![CDATA [
          Here you can type any characters except two right brackets followed
          by a greater-than symbol.
          ]]>
          注意
              關鍵詞CDATA,就像其它你所見到的XML 關鍵詞,必須以大寫字母撰寫。
              如果你想包含一段原始碼或標簽當作被顯示在瀏覽器中元素的真實字符數據的一部份,你可以使用CDATA 區段來防止XML 解析器將「<」或「&」字符解釋成XML 卷標。下面就是一個范例:
          <A-SECTION>
          The following is an example of a very simple HTML page:
          <![CDATA[
          <HTML>
          <HEAD>
          <T99vLE>R.Jones &Sons</T99vLE>
          </HEAD>
          <BODY>
          <P>Welcome to our home page!</P>
          </BODY>
          </HTML>
          ]]>
          </A-SECTION>
              例如,若沒有CDATA 區段,處理器會假設<HTML>是套迭的元素的起始部分,而不是A-SECTION 元素的字符數據的起始部分。
          注意
              既然你可以直接將「<」與「&」字符加入CDATA 區段中,你就不必使用字符參照(& #60;與&)或預先定義的普通實體參照(& lt;與& amp;),筆者將在第六章中解釋字符參照與實體參照。事實上,如果你使用這類的參照,解析器會將參照中的每個字符照字面解釋,且不會更換掉含有「<」或「&」字符的參照。
              你可以放置CDATA 區段的地方
              你可以將CDATA 區段放置在字符數據可以出現的任何地方-也就是說,在元素的內容中卻不在XML 標簽中。下面是一個合法放置CDATA 區段的范例
          <?xml version="1.0"?>
          <MUSICAL>
          <T99vLE_PAGE>

           

          <![CDATA[
          <Oklahoma!>
          By
          Rogers &Hammerstein
          ]]>
          </T99vLE_PAGE>
          <!--Other elements here...-->
          </MUSICAL>
              顯示于下頁的錯誤型式XML 文件包含了兩個違法的CDATA 區段。第一個不是在元素的內容中。第二個則是位在文件元素的內容之中,但卻不是在起始標簽中。
          <?xml version="1.0"?>
          <![CDATA[ ILLEGAL::not within element content!]]>
          <DOC_ELEMENT>
          <SUB_ELEMENT <![CDATA[ ILLEGAL::inside of markup!]]>>
          sub-element content...
          </SUB_ELEMENT>
          </DOC_ELEMENT>
          注意
              CDATA 區段不能成巢狀套迭。亦即,你不能將一個CDATA 區段放到另一個區段中。

          posted @ 2007-04-29 17:42 風雨兼程 閱讀(1856) | 評論 (0)編輯 收藏

          三 生 三 世

          前生,你以緋紅的思念,偎依我的窗前,將一生的愛戀開放成桃花一片。

          ????你深情的佇立在早春三月,以燦爛溫暖我冬季曾經冰封的心河。你將錚錚的誓言,以千枝萬條纏繞在我的窗前,你將依戀深鎖在每一朵花心,呈以幽香親吻我的氣息。

          ????隔窗,是我纖纖的倩影,以一雙翦水的眼眸將你一片迷醉的桃紅粉成癡癡的凝望。在微風細雨里,你致以我呢喃的細語,那雨滴落在花瓣上的顫音是你為我譜寫的相思曲。懵懂的我,總是憑窗而立,期待一襲青衫從幽香裊繞的花樹下,以熱切的眼眸向我走來。紅塵中的我,卻看不穿你糾結滿樹的想我的情結。終究,你在屬于自己季節的尾聲,隔窗,用最后眷戀的眼光,在不舍與哀傷中碎落我的窗下,看著你飄零的身軀,撞入我心扉的是來得深刻而猛烈的疼痛,急促地伸出手,想接住你,在錯過的瞬間,有淚從眼中滴落……。愛,總在失去的瞬間才知道它的存在。含淚,我祈禱來生也盛開成一簇桃花,與你臨風偎依,還你一生的情。?
            
          ????前生,我是桃花一片,以最美的姿色開滿你路過的青石小徑,將一生的眷戀開放成寂寞的等待。等你瀟灑的身影路過時,輕撫我的臉龐,給我一聲愛憐的贊嘆,我以香為魂,伴你在花叢中留戀,聽你為我賦詩,為我吹笛。當你每次轉身離去時,我在微風中心碎的聲音,你是否聽見?總在無你的夜晚獨自浴著冷月的清輝想你,思念便凋落成滿地憔悴的容顏,清晨,花瓣上的露珠便是我為你流了一夜的淚。?

          ???我寂寞而又充滿期待地等著你經過,貪戀地呼吸著有你的空氣,眷戀著你身上發出來的味道,有一種依偎的感覺和莫名的幸福。雖然我不能表達對你的所有的愛戀,只能無語地看著你來去匆忙的身影,你為我的每次駐足和停留,都讓我感動和欣喜萬分,你的憂郁的長嘆總牽動我的心弦,在你看不見里為你暗自落淚。如果可以,我多么希望就這樣在這里靜默地守侯,守侯朝來暮去的時光里有你的身影陪伴,與你偕老。

          ???我只有一季短暫的生命和一顆愛你的心,在不屬于我的季節即將來臨之際,我將離去。雖然我有深深的眷戀和離別的傷痛,可是,生命不容我為你停留。就讓我在季節最后的晨光里,以飛舞的姿勢婆娑而落,在你嗚咽的笛音里慢慢凋零在你的指尖……。我祈禱來生不再為花,許我能語言可以向你傾訴。

          ???今生,我是桃樹下畫花的女子,就著一襲白色長裙,拈一朵桃花簪入發,染幾筆丹青,將你我的姻緣寫進花瓣,等著能解花語的你飄然而來,執我之手,與我傾訴,共我繾綣。

          ???不許愿來世相見,不求一生擁有,只愿今生有緣能與你攜手相擁,走過一段人生。我以三生的情,換你一生的緣,只是不愿再錯過生命中的一段情緣。

          posted @ 2007-02-26 14:05 風雨兼程 閱讀(189) | 評論 (0)編輯 收藏

          一個關于模態彈出窗口刷新父窗體的問題。急

          問:
          我在做一套系統的時候碰到這樣一個問題。
          彈出的模態窗口不能刷新父窗體。例如我新增數據是在模態窗口而添加成功了關閉后父窗體只能手動刷新。這樣就嚴重影響了一些效果。
          我嘗試過一些方法但是始終不對。請各位高手進來一下。

          用OPEN打開的不管是在關閉窗體時自動刷新都沒有任何問題。見下例

          父窗體代碼
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title></title>
          </head>
          <body>
          <a href="javascript:void(0)" onclick="window.open('2.html','','')">open</a>
          </body>
          </html>

          子窗體代碼
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title></title>
          </head>
          <body onUnload="opener.location.reload()">
          <!-
          用按紐直接刷新父窗體
          <a href="javascript:opener.location.reload()">刷新</a>
          ->
          </body>
          </html>

          ?

          換做模態后的程序。
          父窗體代碼
          <%@ page contentType="text/html; charset=GBK" %><HEAD>
          <body onUnload="opener.location.reload()">
          <script language="JavaScript">
          function showabout()
          {
          ? var returnValue=showModalDialog('2.html','','dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
          }?
          void(0);
          </script>
          <a href="javascript:void(0)" onClick="showabout()">open</a>

          子窗體代碼
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title></title>
          </head>
          <body onUnload="opener.location.reload()">
          <a href="javascript:opener.location.reload()">刷新</a>
          </body>
          </html>

          ?

          請各位參考一下上面的代碼,我感覺錯誤好象是出在
          opener.location.reload()

          謝謝
          ______________________________________________________________________________________________
          答1:
          模態窗口不能在子窗口中直接刷新父窗口

          父窗體代碼
          <%@ page contentType="text/html; charset=GBK" %><HEAD>
          <body onUnload="opener.location.reload()">
          <script language="JavaScript">
          function showabout()
          {
          ? var returnValue=showModalDialog('2.html','','dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
          ? location.reload()//模態窗口傳值下來后就可以刷新了.
          }?
          void(0);
          </script>
          <a href="javascript:void(0)" onClick="showabout()">open</a>

          子窗體代碼
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title></title>
          </head>
          <body onUnload="opener.location.reload()">
          <a href="javascript:opener.location.reload()">刷新</a>//???在子窗口中不能刷新父窗口,只有window.close下去后才可刷新.
          </body>
          </html>

          ______________________________________________________________________________________________
          答2:
          模態對話框是不能用opener引用父窗口的,而是需要父窗口主動傳遞指針變量的
          這個window.showModalDialog有第二個參數,就是做這個用的,你需要把window穿過去,就是這樣
          var returnValue=showModalDialog('2.html',window,'dialogWidth:520px;dialogHeight:510px;help:no;center:yes;resizable:no;status:no;scroll:no');
          這樣在對話框中就可以引用父窗口對象,怎么引用呢,通過window.dialogArgument就可以應用父窗口了。

          ______________________________________________________________________________________________
          答3:
          謝謝。我終于搞定了。
          上面的dialogArgument差個S
          我調了半天。發現在body里面應該加上location
          也就是<body onUnload="window.dialogArguments.location.reload()">

          posted @ 2007-02-09 14:48 風雨兼程 閱讀(5905) | 評論 (4)編輯 收藏

          asp.net中動態變更CSS

          在asp.net中,有的時候要動態變換CSS,比如有的時候做個性化頁面,可以這樣做
          <head>
          <link id="MyStyleSheet" rel="stylesheet" type="text/css" runat="server" />
          </head>
          之后,在要更換CSS的頁面中,使用如下代碼
          Sub Page_Load(Sender As Object, E As EventArgs)
          If Not (IsPostBack)
          MyStyleSheet.Attributes.Add("href","/css/flostyle.css")
          End If
          End Sub??

          posted @ 2007-02-09 13:09 風雨兼程 閱讀(233) | 評論 (0)編輯 收藏

          動態改變Asp.net頁面標題

          1.引用命字空間
          use System.Web.UI.HtmlControls.HtmlGenericControl
          在Asp.net 中你可以使用HtmlGenericControl()來動態改變頁面Title(標題)



          2.為HTML Title標簽設置ID,并將其作為服務器端運行
          <HTML>
          ??<HEAD>
          ????<TITLE ID=MyPageTitle Runat=Server> </TITLE>
          ??</HEAD>
          ?<BODY>
          ??</BODY>
          </HTML>



          3.將Title標設設為Runat=server后,就可以后臺代碼進行訪問~~,通過InnerText或InnerHtml
          來改變其值.
          public class Use_This : System.Web.UI.Page
          ?{
          ??
          Private System.Web.UI.HtmlControls.HtmlGenericControl SetMyTitle;
          ??private void Page_Load(object sender, System.EventArgs e)
          ??{

          ?? SetMyTitle.InnerText = "~哈哈~";

          ??}
          }


          posted @ 2007-02-09 13:08 風雨兼程 閱讀(409) | 評論 (1)編輯 收藏

          怎樣實現動態添加刪除表單中的行

          <script LANGUAGE="JAVASCRIPT">
          var i= 0;
          var a = 0;
          function insertRow(){
           var otr=myTable.insertRow(myTable.rows.length);
           var ocell=otr.insertCell(0);
           ocell.innerHTML="<input type=file name='f1'+a+''>"
           var ocell=otr.insertCell(1);
          ?? ocell.innerHTML="<input type=file name='f2'+a+''>"
          ?? var ocell=otr.insertCell(2);
          ?? ocell.innerHTML="<input type=button name='del'+a+'' value=刪除 onclick=myTable.deleteRow(event.srcElement.parentElement.parentElement.rowIndex)>"
          ?? i++;
          ?? a++;
          }
          </SCRIPT>
          </HEAD>
          <BODY>
          <table id="myTable" border=1 width=600 >
          </table>
          <input type=button onclick="insertRow()"  value="插入行">
          </BODY>

          2
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          <title>添加刪除行</title>
          </head>

          <body><script LANGUAGE="JAVASCRIPT">
          var j= 1;
          var i= 0;
          var a = 0;
          function insertRow(){
           var otr=myTable.insertRow(myTable.rows.length);
           ??? var ocell=otr.insertCell(0);?????????????????????????????????????????
            ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text? size='12' maxlength='7'name='num"+a+"'>"
           ??? var ocell=otr.insertCell(1);
          ?? ocell.innerHTML="<select name='adsl"+a+"'><option value='1'>ADSL</option><option value='2'> LAN</option></select>"
          ????? var ocell=otr.insertCell(2);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'value='"+j+"'>"
          ????? var ocell=otr.insertCell(3);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"
          ????? var ocell=otr.insertCell(4);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"
          ????? var ocell=otr.insertCell(5);?
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"?????
          ???? var? ocell=otr.insertCell(6);
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=button name='del'+a+'' value=刪除 onclick=myTable.deleteRow(event.srcElement.parentElement.parentElement.rowIndex)>"
          ?? j++;
          ?? i++;
          ?? a++;
          }
          </SCRIPT>
          </HEAD>
          <BODY>
          <table id="myTable"width="778" border="1" align="center" cellspacing="0" bordercolorlight="#66CC33" bordercolordark="ffffff">
          ? <tr>
          ??? <td><div align="center">號碼</div></td>
          ??? <td nowrap><div align="center">寬度類型</div></td>
          ??? <td nowrap><div align="center">起始時間</div></td>
          ??? <td nowrap><div align="center">優惠時間</div></td>
          ??? <td nowrap><div align="center">優惠金額</div></td>
          ??? <td nowrap><div align="center">備注</div></td>
          ??? <td nowrap><div align="center">刪除</div></td>
          ? </tr>
          </table>
          <p align="center">
          ? <input type=button onclick="insertRow()"value="插入行">
          </p>

          <p>&nbsp;</p>
          </BODY>

          </body>
          </html>

          3
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          <title>添加刪除行</title>
          </head>

          <body><script LANGUAGE="JAVASCRIPT">
          var i= 0;
          var a = 0;
          function insertRow(){
           var otr=myTable.insertRow(myTable.rows.length);
           ??? var ocell=otr.insertCell(0);?????????????????????????????????????????
            ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text? size='12' maxlength='7'name='num"+a+"'>"
           ??? var ocell=otr.insertCell(1);
          ?? ocell.innerHTML="<select onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'name='adsl"+a+"'><option value='1'>ADSL</option><option value='2'> LAN</option></select>"
          ????? var ocell=otr.insertCell(2);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'value='"+a+"'>"
          ????? var ocell=otr.insertCell(3);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"
          ????? var ocell=otr.insertCell(4);?????????????????????????????????????????
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"
          ????? var ocell=otr.insertCell(5);?
          ?? ocell.innerHTML="<input onkeydown='if(event.keyCode==13){event.keyCode=9;return true}'type=text size='20'name='aa"+a+"'>"?????
          ???? var? ocell=otr.insertCell(6);
          ?? ocell.innerHTML="<input type=button name='del'+a+'' value=刪除 onclick=myTable.deleteRow(event.srcElement.parentElement.parentElement.rowIndex)>"

          ?? i++;
          ?? a++;
          }
          function deleteRow()
          {
          ?? tr=document.getElementById("myTable").rows;
          ?? if(tr.length>1)tr[tr.length-1].removeNode();
          }
          </SCRIPT>
          </HEAD>
          <BODY>
          <table id="myTable"width="778" border="1" align="center" cellspacing="0" bordercolorlight="#66CC33" bordercolordark="ffffff">
          ? <tr>
          ??? <td><div align="center">號碼</div></td>
          ??? <td nowrap><div align="center">寬度類型</div></td>
          ??? <td nowrap><div align="center">起始時間</div></td>
          ??? <td nowrap><div align="center">優惠時間</div></td>
          ??? <td nowrap><div align="center">優惠金額</div></td>
          ??? <td nowrap><div align="center">備注</div></td>
          ??? <td nowrap><div align="center">刪除</div></td>
          ? </tr>
          </table>
          <p align="center">
          ? <input type=button onclick="insertRow()"value="插入行">
          ? <input type=button onclick="deleteRow()"value="刪除行">
          </p>

          <p>&nbsp;</p>
          </BODY>

          </body>
          </html>

          posted @ 2007-01-29 18:58 風雨兼程 閱讀(1222) | 評論 (0)編輯 收藏

          文件上傳

          ?function OutputUpload(id,title) { var tblMain=document.getElementById("Table2"); var tbl=document.getElementById("Table3"); var isExsitfile=document.getElementById("file"+id); var text=document.createTextNode("上傳:"+title+"虛擬形象圖片"); if(isExsitfile==null) { var str= ""; tbl.rows[id].cells[0].insertAdjacentHTML("beforeEnd",str) ; tbl.rows[id].cells[0].appendChild(text); } else { tbl.rows[id].cells[0].removeChild(isExsitfile); tbl.rows[id].cells[0].innerText=""; } }

          if(Request.Form["CHK"]!=null)
          ???{?? string chkvalue=Request.Form["CHK"].ToString();
          ????string[] mylayer=chkvalue.Split(new char[]{','});
          ????string layer="";
          ????for(int i=0;i<mylayer.Length;i++)
          ????{?????
          ?????
          ?????if(layer!="")
          ?????{
          ??????layer+="_";
          ?????}
          ?????layer+=mylayer[i];
          ?????
          ????}
          ????ViewState["layer"]=layer;
          ??????
          ????//得到數據庫編號
          ????if(itemid1.ToString()==null)
          ????{
          ?????itemid1=itemid1+1;
          ????}
          ????else
          ????{
          ?????itemid1=GetItemID()+1;
          ????}
          ????System.Web.HttpFileCollection files=System.Web.HttpContext.Current.Request.Files;
          ????try
          ????{
          ?????for(int i=0;i<files.Count;i++)
          ?????{??
          ??????string fid=itemid1+".gif";
          ??????HttpPostedFile postedFile=files[i];
          ??????
          ??????if(postedFile.FileName.Length>0)
          ??????{
          ???????string fileName,fileExtension;
          ???????fileName=System.IO.Path.GetFileName(postedFile.FileName);
          ???????fileExtension=System.IO.Path.GetExtension(fileName);

          ???????if(fileExtension!=GlobalVars.FILETAILNAME[0])
          ???????{
          ????????Response.Write("<script>alert(\"文件格式不正確!!!\")</script>");
          ????????return;
          ???????}
          ???????if(i==0)
          ???????{
          ????????//上傳圖片到服務器上??
          ????????BLL.Visual_Items bll=new BLL.Visual_Items();
          ????????bool tf=bll.Exists(this.txtName.Text);
          ????????if(tf==false)
          ????????{??
          ?????????if(System.IO.Directory.Exists(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\0"))
          ?????????{
          ??????????postedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\0\\" + fid);?
          ?????????}
          ?????????else
          ?????????{
          ??????????System.IO.Directory.CreateDirectory(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\0");
          ??????????postedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\0\\" + fid);?
          ?????????}
          ?????????// 把圖片的信息記錄保留到數據庫中
          ?????????string s="images/img_Visual/show/0/"+fid;
          ?????????AddData(s,itemid1,layer);

          ????????}
          ????????else
          ????????{
          ?????????this.Response.Write("<script>alert('數據庫已存在此條數據!')</script>");
          ????????}

          ???????}
          ???????else
          ???????{
          ????????if(System.IO.Directory.Exists(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\"+mylayer[i-1]))
          ????????{
          ?????????postedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\"+mylayer[i-1]+"\\" + fid);
          ????????}
          ????????else
          ????????{
          ?????????System.IO.Directory.CreateDirectory(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\"+mylayer[i-1]);
          ?????????postedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "\\images\\img_Visual\\show\\"+mylayer[i-1]+"\\" + fid);

          ????????}
          ???????}
          ??????}
          ??????else
          ??????{
          ???????Response.Write("<script>alert(\"虛擬形象圖片不能為空!\")</script>");
          ???????return ;

          ??????}
          ?????}?
          ????}
          ????catch(Exception ex)
          ????{
          ?????string sRawURL = Request.RawUrl;

          ?????if(sRawURL.IndexOf("?") > -1)
          ?????{
          ??????sRawURL = sRawURL.Substring(0,sRawURL.IndexOf("?"));
          ?????}????
          ?????
          ?????Response.Write(ex.ToString());
          ????}?
          ???}
          ???else
          ???{
          ?????????????? Response.Write("<script>alert(\"請選擇虛擬形象所屬層!!\")</script>");
          ???}

          posted @ 2006-12-16 11:31 風雨兼程 閱讀(249) | 評論 (0)編輯 收藏

          2006年it人士必去的10個網站

          1、chinaunix
          網址:http://www.chinaunix.net/
          簡介:中國最大的linux/unix技術社區。

          2、itpub
          網址:http://www.itpub.net/
          簡介:有名氣的IT技術論壇,看看它的alexa排名就知道有多火了,尤其以數據庫技術討論熱烈而聞名。ITPUB論壇的前身是建立在smiling的oracle小組。

          3、51cto
          網址:http://www.51cto.com/
          簡介:由國內知名IT門戶網站管理團隊,獲近千萬風險投資,于2005年8月正式創立,是國內首家定位于網絡技術人員的綜合性服務平臺,是中國最大的網絡技術網站。

          4、csdn
          網址:http://www.csdn.net/
          簡介:于1999年3月成立,是中國最大的軟件開發人員網站,社區熱心高手眾多,并有不少MVP(微軟最有價值專家)長期活躍在這里,類似懸賞的積分制度,也使論壇增添不少樂趣。

          5、落伍者
          網址:http://www.im286.com/
          簡介:網站站長都應該知道的地方,只是論壇id需要手工審核。

          6、藍色理想
          網址:http://www.blueidea.com/
          簡介:有名的關于網站設計的網站,擁有大量忠實網友。

          7、it寫作社區
          網址:http://www.donews.com/
          簡介:一個可以讓你的思維活躍起來的地方,在這里it評論人和撰稿人可以找到很多的文字素材。

          8、博客堂
          網址:http://blog.joycode.com/
          簡介:眾多MVP交流的地方,這里有各類最新技術,只是網站成員采用邀請制,不提供注冊或者申請功能。

          9、it英雄榜
          網址:http://www.itheroes.cn/
          簡介:網站以介紹it界人士為主,廣大從事it的人員可以從中獲取他們的經驗。

          10、邪惡八進制
          網址:http://www.eviloctal.com/
          簡介:目前為數不多的一個討論氣氛濃厚,技術水平高的網絡安全網站,邪惡八進制信息安全團隊也是一個管理規范、人員素質高的網絡安全小組。

          posted @ 2006-11-08 15:14 風雨兼程 閱讀(241) | 評論 (0)編輯 收藏

          ASP.NET應用中十大常見的潛在問題

          Jeff Prosise在《MSDN雜志》2006年7月期上的文章歷數ASP.NET應用中常見的,容易出錯,影響性能和擴縮性的潛在問題

          Keep Sites Running Smoothly By Avoiding These 10 Common ASP.NET Pitfalls
          http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/

          1。設置輸出緩存的用戶控件,如果用LoadControl動態裝載,LoadControl返回對象屬于PartialCachingControl類,其中的CachedControl也許并不存在,無法轉換成原用戶控件對象類

          2。在 IIS 6.0 中,在設置kernel模式輸出緩存的情形下,OutputCacheModule模塊有時會保留緩存輸出的Set-Cookie header,導致會話串門(cross-session),即一個用戶能看到其他用戶的會話數據

          具體參考KB文章
          An ASP.NET page is stored in the HTTP.sys kernel cache in IIS 6.0 when the ASP.NET page generates an HTTP header that contains a Set-Cookie response
          http://support.microsoft.com/kb/917072

          或者禁止kernel模式輸出緩存
          <httpRuntime enableKernelOutputCache="false" />

          具體參考
          http://support.microsoft.com/kb/820129

          3。 Forms 認證Ticket的存活時間。在ASP.NET 1.*中,在沒有用編碼設置的情形下,如果是持久保存,存活時間是50年,如果是非持久保存,存活時間是30分鐘。這個問題在ASP.NET 2.0中已經解決,默認存活時間會用web.config里的設置。在ASP.NET 1.*中,只能用編碼來解決,具體編碼參考原文中的例子。

          4。 View State,如果濫用的話,是無聲的性能殺手,特別是DataGrids和GridViews等,應該設置EnableViewState=false,或者考慮通過更改LoadPageStateFromPersistenceMedium/SavePageStateToPersistenceMedium把View State放在服務器端。

          5。如果使用SQL Server做會話狀態服務器的話,默認情形下,每個請求會訪問狀態服務器2次,造成性能下降。解決方案是,在不用會話狀態的頁面里,設置

          <%@ Page EnableSessionState="false" ... %>

          在只讀會話狀態的頁面里,設置

          <%@ Page EnableSessionState="ReadOnly" ... %>

          6。在ASP.NET 2.0應用中,如果在web.config里設置

          <roleManager enabled="true" />

          默認情形下,角色數據是不緩存的,如果角色管理器需要確認當前用戶的角色的話,會訪問數據庫,導致性能下降,解決方案是設置把角色數據緩存在Cookie里(這個Cookie是加過密的)

          <roleManager enabled="true" cacheRolesInCookie="true" />

          7。Profile 特性持久化問題,在默認情形下,ASP.NET profile管理器使用XML持久機制持久化自定義Profile類,不保存這些類的私有成員,解決方案是把這些類標為[Serializable]或實現ISerializable ,這樣profile管理器會使用binary serializer

          8。過長的數據庫查詢或I/O操作會導致線程池的飽和,導致ASP.NET的性能下降。ASP.NET 2.0提供了異步網頁(asynchronous page)機制來緩解這個問題。具體參考Jeff Prosise在《MSDN雜志》2005年10月期上的文章

          Asynchronous Pages in ASP.NET 2.0
          http://msdn.microsoft.com/msdnmag/issues/05/10/WickedCode/

          9。<identity impersonate="true" /> 導致客戶端用戶的身份模擬,要慎用,避免用身份模擬(Impersonation)替代ACL授權。

          10。別太有信心,多用Profiler剖析你的應用對數據庫的訪問情形。重視數據庫的設計,認識到DataSet和DataAdapter對web應用也許并不合適,數據訪問層要恰當設計,防止粗劣細分(poor factorization),避免在相對簡單的操作上浪費太多的CPU周期,導致性能下降

          posted @ 2006-11-07 14:08 風雨兼程 閱讀(185) | 評論 (0)編輯 收藏

          Asp.net動態生成html頁面

          此功能適用于后臺數據庫功能不強的web站點,即大部分文本不是存放在數據庫的記錄中,而是放在html文件或者xml文件中,僅僅把索引放到數據庫中,如文章標題、類別、查詢關鍵字等。這樣適合于后臺沒有諸如MS Sql Server這樣的數據庫支持的Web站點。

          適用于新聞發布系統,比如sina、163等都是采用動態生成html頁面的。

          適用于需動態定制頁面的程序。比如論壇、聊天室等。可以加載定制好的html頁面,來加強美觀。

          思路

          1. 利用如Dw-Mx這樣的工具生成html格式的模板,在需要添加格式的地方加入特殊標記(如$htmlformat$),動態生成文件時利用代碼讀取此模板,然后獲得前臺輸入的內容,添加到此模板的標記位置中,生成新文件名后寫入磁盤,寫入后再向數據庫中寫入相關數據。

          2. 使用后臺代碼硬編碼Html文件,可以使用HtmlTextWriter類來寫html文件。

          優點

          1. 可以建立非常復雜的頁面,利用包含js文件的方法,在js文件內加入document.write()方法可以在所有頁面內加入如頁面頭,廣告等內容。

          2. 靜態html文件利用MS Windows2000的Index Server可以建立全文搜索引擎,利用asp.net可以以DataTable的方式得到搜索結果。而Win2000的Index服務無法查找xml文件的內容。如果包括了數據庫搜索與Index索引雙重查找,那么此搜索功能將非常強大。

          3. 節省服務器的負荷,請求一個靜態的html文件比一個aspx文件服務器資源節省許多。

          缺點

          思路二: 如果用硬編碼的方式,工作量非常大,需要非常多的html代碼。調試困難。而且使用硬編碼生成的html樣式無法修改,如果網站更換樣式,那么必須得重新編碼,給后期帶來巨大的工作量。

          因此這里采用的是第一種思路

          示列代碼

          1.定義(template.htm)html模板頁面

          <html>

          <head>

          <title></title>

          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

          </head>

          <body >

          <table $htmlformat[0] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" style="border:1px solid #000000">

          <tr>

          <td width="100%" valign="middle" align="left">

          <span style="color: $htmlformat[1];font-size: $htmlformat[2]">$htmlformat[3]</span>

          </td>

          </tr>

          </table>

          </body>

          </html>

          2.asp.net代碼:

          //---------------------讀html模板頁面到stringbuilder對象里----

          string[] format=new string[4];//定義和htmlyem標記數目一致的數組

          StringBuilder htmltext=new StringBuilder();

          try

          {

          using (StreamReader sr = new StreamReader("存放模板頁面的路徑和頁面名"))

          {

          String line;

          while ((line = sr.ReadLine()) != null)

          {

          htmltext.Append(line);

          }

          sr.Close();

          }

          }

          catch

          {

          Response.Write("<Script>alert('讀取文件錯誤')</Script>");

          }

          //---------------------給標記數組賦值------------

          format[0]="background=\"bg.jpg\"";//背景圖片

          format[1]= "#990099";//字體顏色

          format[2]="150px";//字體大小

          format[3]= "<marquee>生成的模板html頁面</marquee>";//文字說明

          //----------替換htm里的標記為你想加的內容

          for(int i=0;i<4;i++)

          {

          htmltext.Replace("$htmlformat["+i+"]",format[i]);

          }

          //----------生成htm文件------------------――

          try

          {

          using(StreamWriter sw=new StreamWriter("存放路徑和頁面名",false,System.Text.Encoding.GetEncoding("GB2312")))

          {

          sw.WriteLine(htmltext);

          sw.Flush();

          sw.Close();

          }

          }

          catch

          {

          Response.Write ("The file could not be wirte:");

          }

          小結

          用此方法可以方便的生成html文件。程序使用了是循環替換,因此對需替換大量元素的模板速度非常快。

          posted @ 2006-11-07 14:01 風雨兼程 閱讀(789) | 評論 (0)編輯 收藏

          僅列出標題
          共3頁: 上一頁 1 2 3 下一頁 
          主站蜘蛛池模板: 塘沽区| 玉山县| 长沙市| 新化县| 中卫市| 罗源县| 溧阳市| 文化| 南昌县| 舟曲县| 涡阳县| 枞阳县| 天等县| 玉溪市| 石台县| 湖南省| 扎兰屯市| 武义县| 万载县| 闽侯县| 广宗县| 黎城县| 吉隆县| 海南省| 宁陵县| 兴安盟| 大厂| 桓台县| 佛学| 思南县| 康平县| 永胜县| 汾西县| 正安县| 河北省| 淮阳县| 双桥区| 靖远县| 白城市| 铅山县| 分宜县|