發表文章

目前顯示的是 2020的文章

Javascript基礎語法學習介紹5_navigator Object使用

  Javascript基礎語法學習介紹1(輸出/變數/判斷式/函數/陣列/迴圈) Javascript基礎語法學習介紹2_Object Javascript基礎語法學習介紹3_Javascript背後運行原理(js引擎)_ExecutionStack Javascript基礎語法學習介紹4_Function運行原理_Hosting、Scope與 ScopeChain觀念 在網頁開發上有時候會有需要判斷Client端用捨麼瀏覽器和相應資訊 甚至去得知是在捨麼作業系統發出瀏覽目前網頁的請求 黃色標註起來代表實務上較常用 navigator.platform 獲取哪個作業系統資訊 Windows OS 就是Win前綴(Ex: Win32、Win16) Mac OS 就是Mac前綴(Ex:MacIntel、Macintosh、MacPPC、Mac68K) Unix或Linux 就可能有HP-UX、SunOS、Linux i686、Linux armv7l.... navigator.product 瀏覽器的引擎名稱 Gecko,webkit,trident 現在好像無論Chrome、IE、EDGE、Firefox、Opera印出來都會是Gecko了 navigator.cookieEnabled 可用於檢查瀏覽器的cookie機制有沒有開啟 navigator.appCodeName 獲取瀏覽器的代碼名稱 例如Mozilla 現在好像無論Chrome、IE、EDGE、Firefox、Opera印出來都會是Mozilla了 navigator.appName 例如Netscape 現在好像無論Chrome、IE、EDGE、Firefox、Opera印出來都會是Netscape了 navigator.userAgent 獲取瀏覽器完整的版本資訊 Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70

C#中XML的Parser處理_load跟loadXML_The entity "xxx" was referenced, but not declared(參考了未宣告的實體xxx)

圖片
最近由於在協助院內一項parser 專利XML檔案任務  也因此有機會累積對XML檔案的相關處理經驗 通常在C#進行XML的讀取與Parser 有兩種方法 XmlDocument.Load 方法 該方法的overload Load(Stream) 從指定的資料流載入 XML 文件。 Load(TextReader) 從指定的 TextReader 載入 XML 文件。 Load(String) 從指定的 URL 載入 XML 文件。 Load(XmlReader) 從指定的 XmlReader 載入 XML 文件。 那通常比較容易直接就寫string 傳入xml 檔案路徑 1 2 XmlDocument XmlDoc = new XmlDocument(); XmlDoc.Load( @"C:\xml_dir\aaa.xml" ); 直到有一天突然跑出詭異的錯誤 參考了未宣告的實體 ’Lstrok’ 後來才得知原來 該XML檔案裏頭竟然藏著一個&字符 所以用第二種方式讀取(參考網路其他人解法) XmlDocument.LoadXml(String) 方法 在讀入後先做&的取代 1 2 3 XmlDocument XmlDoc = new XmlDocument(); string XmlContent = File.ReadAllText( @"C:\xml_dir\aaa.xml" ); XmlDoc.LoadXml(XmlContent.Replace( "&" , "&amp;" )); 然後就又挫屎了~(以後如果看到有人用上面那兩種方式定義,可以先釐清 該XML是如何生成的還有當中內容格式會不會有怪異特殊字符) 因為實際上 有些在XML中有用到如下實體(這是預設XML就會懂得基本entity) &lt;     <     小餘 &gt;     >     大餘 &amp;    &     和號 &apos;   '     單引號 &quot;   "     雙引號 而由於我直接整個文件中所有&做取代會導致 在原本xml就是用特殊

ASP.NET MVC第008天_表單的屬性添加

圖片
  上一篇例子介紹到get , post 那會發現呈現效果都是直接把當前網頁導向到目標網頁 若想額外跳出新分頁(新視窗) 則要多指定表單的屬性為_blank  1 2 3 4 <form action= "/Home/About" method= "get" target= "_blank" > <input type= "text" name= "txt_name" /> <input type= "submit" value= "查詢" /> </form> 預設_self: 顯示在表單所在的當前視窗 更多 參考 而轉到MVC寫法則是利用其overload的另一形式函數在後面添加即可

ASP.NET MVC第007天_表單Get和Post_將View輸入資料傳到Contoller

圖片
  基本上Get Post的觀念之前在PHP也有演練過 [PHP_Day 9]_高階語法_取得HTML中的參數GET_POST 相同觀念就不再贅述了 任何網頁語言都離不開這兩個網頁傳值基礎 這裡一樣建立一個乾淨的MVC空專案 新增一組Controller 跟 對應的View 取名為FormController  專案目錄架構 這裡要演示從 FormController 的 Index View提交表單的過程 透過Get 跟 Post 到HomeController 中 Action回應的Index View 當中差異 發送端(提交到Server後端) /Views/Form/Index.cshtml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name= "viewport" content= "width=device-width" /> <title> Index </title> </head> <body> <div> <form action= "/Home/About" method= "get" > <input type= "text" name= " txt_name " /> <input type= "submit" value= "查詢" /> </form> </div> </body> </html> FormController.cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

ASP.NET MVC第006天_ViewData,ViewBag,TempData用法與差異比較

圖片
在前幾篇有用到從Controller傳遞一些變數值給View的技巧 事實上在.net mvc中不只這一種方法 頁面間和Controller與View之間傳遞引數有幾種方式? Ans:共有4種ViewData,ViewBag,Session,TempData 基本上在ViewPage終究有明確定義如下幾種 能將資料Pass到View的屬性 ViewData Gets or sets a dictionary that contains data to pass between the controller and the view. public System . Web . Mvc . ViewDataDictionary ViewData { get ; set ; } 解釋: 自早期的asp.net MVC版本(1和2)就存在的一個ViewPage屬性, 屬於 Dictionary Object,衍生自 ViewDataDictionary ,能放入任何資料, 使用 Key / Value 的概念存取。 生命週期:僅存於當前的連線請求若發生網頁Redirect就會變Null。 (只有在從Controller到View中) 缺點: 1.值不能在多個請求中共享,不能跨Action傳遞資料,只能在一個Action有效。 (在重redirection後,ViewData中儲存的變數值將變為null。) 2.取出ViewData中的變數值後,必須進行合適的型別轉換(隱式或顯式)和null檢查。 3.沒有IntelliSense 用法: ViewData [ " KeyName " ] = XXX ViewBag Gets the view bag. public dynamic ViewBag { get ; } 解釋: 比較後期才添加的新屬性 跟ViewData有異曲同工之妙,屬於ViewData的封裝集合(把一堆ViewData打包裝放在一個包包)。 本質也是使用 Key / Value 存取,並能放入任何的資料, 而差異在於,它能產生「動態屬性」 (.net 4.0 dynamic) 。 也就是在runtime時候再判斷真正型別 (C# reflection) 生命週期:僅存於當前的連線請求若發生網頁Redirect就會變Nul