顯示具有 Web Form 標籤的文章。 顯示所有文章
顯示具有 Web Form 標籤的文章。 顯示所有文章

2019年9月19日 星期四

ASP.NET (WebForm) 防範 CSRF攻擊

ASP.NET (WebForm) 防範 CSRF攻擊
關鍵字  AntiForgery Token / cross-site request forgery (CSRF攻擊) 

從 NuGet安裝「Microsoft.AspNet.WebPages」套件
使用AntiForgery.GetHtml() 來生成一個隱藏的token
下面的影片,是寫在 Page_Init事件中。

https://youtu.be/-DswQCwVqxk 


相關文章 --  ASP.NET WebForm中異步請求防止XSRF攻擊的方法

https://read01.com/zh-tw/D5kj44.html

其他作法 -- 採用  System.Web.Helpers


建置專案時發生錯誤 剖析器錯誤 - VS2019 + ASP.NET專題實務(VB範例)

有位讀者安裝 VS2019以後,執行 VB範例(ASP.NET Web Form)均會出現錯誤訊息
例如:剖析器錯誤 或 出現一個蹦現視窗,寫著 "建置專案時發生錯誤......"  

"找不到資源"

或 出現 Global.asxa有錯(如下面這一段)....等等
<@ Application codebehind="Global.asax.vb" ....

有幾種解法,問題都是出現在VB語法的範例。 C#就沒有問題。

https://youtu.be/4mGMr3xTQN4




(1) 解決方法如下:

第一,建立一個 ASP.NET (Web Form) VB語法 專案
      (建議使用「空白」專案或網站,比較單純)

第二,在一開始、最單純、什麼都沒有的空白專案中「建置專案
然後,再來撰寫程式(自己新增一個Web Form網頁)
或  COPY 書本的範例到這個專案、網站

就會正常了.....請看下方的圖片說明

===================================================
(2) 另一種解決方法

我在另一台電腦上,安裝VS 2019(比較新的版本,他常改版更新)
有安裝「網站」套件,請看下面的影片說明。

影片(您安裝時少裝了一個東西,在影片 08:11 的時候有說明)
(如下方圖片說明)

在這個環境中,從頭到尾都沒有問題
所以我猜測,有安裝這套件會比較OK。

===================================================
(3) 讀者的回饋(他的解法)

安裝VS2019的時候,將個別元件中 “所有” .net framework版本選擇安裝,
執行後置碼已不會出現 "建置專案時發生錯誤" 訊息。














2018年7月26日 星期四

CKeditor 5 搭配 ASP.NET MVC 或 Web Form

CKeditor 5 搭配 ASP.NET MVC 或 Web Form

CKeditor來到了第五版,好久沒注意,進步很快
https://ckeditor.com/ckeditor-5/


花樣更多,也更漂亮了
但在設定上也有些改變


CKeditor 5 搭配 ASP.NET MVC 或 Web Form
只要簡單的 "複製"  "貼上"就能完成


原廠說明,快速設定  https://docs.ckeditor.com/ckeditor5/latest/builds/guides/quick-start.html


(1) 您要先下載他的套件,裡面大多是CSS與JS檔


(2) ASP.NET MVC

不管您使用 @Html.TextBox、@Html.TextBoxFor 或是 @Html.EiditorFor ....
作法都一樣。


@Html.EditorFor(model => model.輸入方塊的ID)

<script src="https://cdn.ckeditor.com/ckeditor5/11.0.1/classic/ckeditor.js">
</script>

<script>
    ClassicEditor
        .create( document.querySelector( '#輸入方塊的ID' ) )
        .catch( error => {
            console.error( error );
        } );
</script>



============================================

(3) ASP.NET (Web Form)

以前有專屬的DLL檔 for .NET可以下載,並且「加入參考」
我也找不到地方下載了(幸好我手邊還留有v 3.6.6.2版)



新版本似乎改了
所以沒有以前的寫法
<
CKEditor:CKEditorControl ID="CKEditorControl1" runat="server"
                BasePath="~\ckeditor專屬的目錄\" Width="720" Height="450">


但是,改版以後.................

好處就是跟 MVC的作法一模一樣
作法統一了!


<asp:TextBox ID="輸入方塊的ID" runat="server" TextMode="MultiLine">
</asp:TextBox>

<script src="https://cdn.ckeditor.com/ckeditor5/11.0.1/classic/ckeditor.js">
</script>

<script>
    ClassicEditor
        .create( document.querySelector( '#輸入方塊的ID' ) )
        .catch( error => {
            console.error( error );
        } );
</script>



記得,要啟用 ValidateRequestMode="Enabled"

不然的話,為了安全起見,較新版本的Web Form會阻擋
(預設狀況下,不讓您填寫HTML標籤,防止 XSS攻擊)


============================================


針對常用的前端套件、前端特效
例如 jQueryUI / CKeditor / RWD(Bootstrap) / fancyBox / Google Chart這幾個主題


我設計了一份入門課程(線上影片教學)
只要您會「複製、貼上」,就能立即「套用」這些特效到您的網頁裡面。



我相信:從 動手實作 開始,這是最快的學習方式

一旦您 "看得懂" 哪些段落是您需要的,
"複製、貼上" 就能使用


就會做出興趣!

後續您可以買書、上課,更深入的探索這些前端技術

走出第一步,最難。我來陪著您走!
我讓初學者、從零開始 的 「第一步」  極 簡 化!


第一段的課程,大約兩個小時,免費讓您觀賞
歡迎來信跟我登記  mis2000lab (at) yahoo.com.tw; school (at) mis2000lab.net

錄製完成、影片上架後,我會主動跟您通報影片網址,
謝謝您   :-)



********************************************
這份課程,也收錄在 ASP.NET MVC課程裡面,當成「第八天」的教材

    所以,參與 MVC /  Web Form線上教學的朋友門,
    可以免費獲得完整的課程(四小時以上的教學)

ASP.NET MVC 線上課程 -- http://mis2000lab.pixnet.net/blog/post/35141956

ASP.NET Web Form 線上課程 -- http://mis2000lab.pixnet.net/blog/post/34657405

~~隨時來信,都有驚人優惠~~
********************************************


2018年4月16日 星期一

[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)

摘要:[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)

速度比起 ROW_Number差不多,
但比較起來,新的寫法比 ROW_Number省資源





上一篇文章,也是透過SQL指令來進行資料分頁
遠比在「HTML畫面上」寫程式分頁快速多了!!

今天看書時,發現一個新的指令
SQL 2012起,多了 OFFSET...FETCH的指令來輔助  Order By,也可以做資料分頁喔。
教學影片  https://www.youtube.com/watch?v=37q5qez6cbU

如果您是撰寫 ASP.NET MVC,分頁的原理其實雷同。
請參閱  http://mis2000lab.pixnet.net/blog/post/35057473
或是  https://mis2000lab.blogspot.tw/2018/04/aspnet-mvcskip-take.html




當然,您跟我一樣,花十分鐘看一下SQL Server大師  --德瑞克的網站就會了

啊!!!!!!!!德瑞克大師的功力灌頂之後,
 我馬上把我的分頁程式改成這樣
只花了兩分鐘!!!!!(因為我資質弩鈍,花了一點時間練習)
  
請打開書本,或是參閱以前的範例
把SQL指令改成這樣
        //========================
        //== 組合SQL指令 =============
        SqlDataReader dr = null;

//== ADO.NET 參數的寫法 ==
String SqlStr = "Select test_time, id, title, summary from test Order By id 

OFFSET @Page1 ROWS FETCH NEXT @Page2 ROWS ONLY";

        SqlCommand cmd1 = new SqlCommand(SqlStr, Conn);
        cmd1.Parameters.AddWithValue("@Page1", NowPageCount);
        cmd1.Parameters.AddWithValue("@Page2", PageSize);


        dr = cmd1.ExecuteReader();
        //== 第三,自由發揮 ======================
        while (dr.Read())
        {
            haveRec = true;   // 後續省略......
 完成了!YA!!


如果我的說法沒錯的話,這是我「個人」整理出來的重點:
OFFSET X ROWS   代表你忽略了前面幾筆記錄(也就是從這裡  開始讀取,從頭開始算起,第一筆的編號請用「零」代表 )
FETCH NEXT Y ROWS ONLY  代表你從「第幾列」向後 讀取 (我 只要 這幾列的記錄即可!)
  
根據 SQL Server大師  --德瑞克 文章裡面的說法
--  速度比起 ROW_Number差不多,
--  但比較起來,新的寫法比 ROW_Number省資源

  
這裡是微軟 msdn網站的說明(中文) -- http://technet.microsoft.com/zh-tw/library/gg699618(v=sql.110).aspx
使用 OFFSET - FETCH 的限制
  • ORDER BY 會強制使用 OFFSET 和 FETCH 子句。
  • OFFSET 子句則強制搭配 FETCH 使用。您絕對不可以使用 ORDER BY … FETCH。
  • TOP 不可以在相同查詢運算式中與 OFFSET 和 FETCH 結合。
  • OFFSET/FETCH 資料列計數運算式可以是任何將傳回整數值的算術、常數或參數運算式。資料列計數運算式不支援純量子查詢。
  
下列範例示範 OFFSET-FETCH 子句搭配 ORDER BY 的使用方式。
範例 1:略過已排序之結果集的前 10 個資料列,並傳回其餘資料列。 
SELECT * FROM [test] ORDER BY id     OFFSET 10 ROWS;

 範例 2:略過已排序之結果集的前 5 個資料列,並傳回接下來的 5 個資料列 
SELECT * FROM [test] ORDER BY id 
           OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;  
執行成果如下圖


如果您是撰寫 ASP.NET MVC,分頁的原理其實雷同。

請參閱  http://mis2000lab.pixnet.net/blog/post/35057473
或是  https://mis2000lab.blogspot.tw/2018/04/aspnet-mvcskip-take.html


相關文章:

http://mis2000lab.pixnet.net/blog/post/33836306

2018年4月11日 星期三

VS2017,「新增網站」不見了,只剩「專案」



算是一個FAQ。
更新到 v15.6版的 VS 2017之後,以前可以新增「網站」,現在找不到了。

*** VS 2017(第一個上市版本的畫面) ***



*** VS 2017(後續某版本以後,就變成這樣....) ***


簡單的說,
您要用「專案」來開發、或是用「網站」來開發
都可以!

專案與網站有什麼不同?......書本裡面有講

已經在網站裡面開發好的程式,如何轉去專案裡面?......書本裡面有講

這算是上課第一天(上午),初學者必問FAQ的前三名。
課程、書本都有講。不要急躁,好好學,都會學到  :-)




2017年9月18日 星期一

[轉貼]jQuery與JSON的資料傳遞(網頁前段與後端的資料傳遞 - 序列化 Serialization) from kyleshen

今天在論壇上看見一則討論
點部落的另外一位網友 -- kyleshen 有兩篇文章很淺顯易懂(超連結在文章最後面),推薦給大家。

但在觀看這兩篇文章以前,可以從這些文章入門
========================================================================================
你不可不知的 JSON 基本介紹 ( from  AppleBOY )
   http://blog.wu-boy.com/2011/04/%E4%BD%A0%E4%B8%8D%E5%8F%AF%E4%B8%8D%E7%9F%A5%E7%9A%84-json-%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%B4%B9/
陳鍾誠老師的文章  http://ccc.nqu.edu.tw/wd.html#js:object


一圖解千言,看了立刻懂
    

===================================================
2014/5/14補充:
      VS 2013 Update 2推出以後,有提供 JSON file幫您做驗證,有助您撰寫JSON文檔
      詳見 http://blogs.msdn.com/b/webdev/archive/2014/05/12/announcing-new-web-features-in-visual-studio-2013-update-2-rtm.aspx


ASP.NET的朋友通常會用到 JSON.NET
JSON.NET 網站的首頁就有很簡單的範例,解釋這些事情:

(1).  Serialize JSON(我個人的註解:這就是組成、產生JSON格式的內容)

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
 
string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "2008-12-28T00:00:00",
//  "Sizes": [
//    "Small"
//  ]
//}

(2).  Deserialize JSON(我個人的註解:這就是讀取JSON格式的內容)
string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject(json);

string name = m.Name;
// Bad Boys

(3). LINQ to JSON(我個人的註解:如果資料量太大,您可以動手寫LINQ-to-SQL去查詢)

JArray array = new JArray();
array.Add("Manual text");
array.Add(new DateTime(2000, 5, 23));

JObject o = new JObject();
o["MyArray"] = array;

string json = o.ToString();
// {
//   "MyArray": [
//     "Manual text",
//     "2000-05-23T00:00:00"
//   ]
// }

(4). Validate JSON(我個人的註解:驗證JSON格式的內容,驗證後才能取用。XML格式也常常需要驗證,已符合Schema)

JsonSchema schema = JsonSchema.Parse(@"{
  'type': 'object',
  'properties': {
    'name': {'type':'string'},
    'hobbies': {'type': 'array'}
  }
}");

JObject person = JObject.Parse(@"{
  'name': 'James',
  'hobbies': ['.NET', 'LOLCATS']
}");

bool valid = person.IsValid(schema);
// true

JSON.NET的文件與範例都在這裡,相信您看了一次,就會知道怎麼用它
http://james.newtonking.com/json/help/index.html



完成上面的入門以後,相信後續的文章就能看得懂了。

微軟 msdn這個範例也很淺顯喔!
http://msdn.microsoft.com/zh-tw/library/hh923971(v=vs.85).aspx

點部落的另外一位網友 -- kyleshen 有兩篇文章
如何在前端傳遞JSON物件至後端接收


介紹如何從後端組出JSON物件,回傳至前端接收。

相關的文章可以參閱:


[入門] JSON.NET 入門  ( from johnny )


微軟MVP小歐也有撰寫序列化的三篇文章:

微軟 msdn文件 -- 序列化
http://msdn.microsoft.com/zh-tw/library/ms233843.aspx



除了上文提到的 JSON.NET之外
微軟自從 .NET 3.5起,也有推出 JavaScriptSerializer 類別

System.Web.Script.Serialization 命名空間包含可用來對 Managed 型別進行 JavaScript Object Notation (JSON) 序列化和還原序列化的類別。 它也提供了自訂序列化行為的擴充性功能。

類別說明
公用類別JavaScriptConverter為自訂型別轉換子提供抽象基底類別。
公用類別JavaScriptSerializer為具有 AJAX 能力的應用程式提供序列化和還原序列化功能。
公用類別JavaScriptTypeResolver提供實作自訂型別解析程式的抽象基底類別。
公用類別ScriptIgnoreAttribute指定 JavaScriptSerializer 不會將公用屬性或公用欄位序列化。 此類別無法被繼承。
公用類別SimpleTypeResolver提供 Managed 型別的型別解析程式。

[轉貼] ASP.NET -- Web Service (.asmx) & JSON

ASP.NET Web Service (.asmx) 要傳回 JSON格式
大力推薦這一篇 Web Service in ASP.NET (Return JSON and XML)
文章裡面使用了 JavaScriptSerializer類別 (命名空間: System.Web.Script.Serialization)

以前沒做過,但臨時被要求 ASP.NET Web Service 要傳回 JSON格式
找到網路上兩篇好文章,為自己做筆記。

如果您寫過 Web Service的話
直接看程式碼就會做了,淺顯易懂。只有很細微的修改:

點選圖片可連回原文出處....

文章裡面使用了 JavaScriptSerializer類別 (命名空間:  System.Web.Script.Serialization)


如果您的(Client端)要用 jQuery來接收
     對方(Server端)的 Web Service ( 傳回 JSON格式)

另外也有幾篇好文章,也推薦給大家:
(這一篇是用 ASP.NET 2.0做的,但跟上面介紹的方法雷同。)

 
 
******************************************************************************************
如果語法轉換有問題,可以參閱
******************************************************************************************

本網站以前的相關文章:
      有些朋友在開啟網站或專案時,選用 .NET 4.5.x (VS 2013) or .NET 4.6 (VS 2015)
      加入新項目時,找不到 Web Service (.asmx) ?????

      您可以改為「開啟」 .NET 4.0 or 4.5 (VS 2012)的網站或專案,就能在其中加入「Web Service (.asmx)」
      ASP.NET的 Web Service or WCF Service只是一個沒有「畫面」的 ASP.NET網頁...... 不要把它想得太難啦  :-)

Web Service入門 #2,呼叫現成的Web Service 給我的程式來用



[入門範例] ASP.NET Web Service (asmx) 與 jQuery AJAX

[轉貼]jQuery與JSON的資料傳遞(網頁前段與後端的資料傳遞 - 序列化 Serialization) from kyleshen


分享,讓知識更加偉大
謝謝每一位樂於分享的前輩  :-)



 
 
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ
請看我們的「售後服務」範圍(嚴格認定)