AJAX 加入 AntiForgeryToken

為了防止CSRF攻擊,我們可以在MVC的Controller加上ValidateAntiForgeryToken這個標籤來進行Token的驗證,通常在前端的Form裡面也會加上@Html.AntiForgeryToken()來產生要跟後端驗證的Token,但如果有時候只是要透過AJAX來進行資料異動(ex:刪除資料)這種沒有表單的動作時,我們要把@Html.AntiForgeryToken()加在哪裡才不會打AJAX時老是出現500的回應呢?

...繼續閱讀 »

JQuery如何把特殊符號(ex:< . >)當成純字串顯示

今天上班時遇到個問題,我有一個表單是允許輸入特殊符號的(ex:'<'. '>')。表單輸入完後要把輸入的資料組合成tr. td字串append到我的<table>後面,但卻遇到了個問題。只要我輸入的表單欄位有包含'<'或是'>',render出來的畫面都會怪怪的,雖然知道應該是特殊符號的問題導致HTML變的怪怪的,但之前都是有遇到問題才去找答案,為節省日後時間,就趁這次機會做個筆記記錄下來。

...繼續閱讀 »

使用Unobstrusive-AJAX來執行AJAX

Unobstrusive-AJAX是為微軟的一個Js套件,你可以再HTML標籤裡加上一些特定的屬性,不用自己寫$.ajax類似的Js程式碼,即可完成以前的AJAX效果。其實優點我也不是很懂,google一下是說可以不用在前端cshtml裡面寫太多的javascript吧,可以把大部分的Js程式移到外部js檔,讓html跟Js切分得更乾淨。

...繼續閱讀 »

jQuery Validation Plugin + jQuery.validate.unobtrusive + AJAX,不透過form submit來做網頁表單驗證

表單驗證是網頁很常用的功能,通常是submit會觸發驗證流程(會把jQuery.validator.unobtrusive.parse("#form1");  會把檢核觸發寫在submit button裡)。但今天收到個需求,網頁因為某些因素不想透過submit 表單post資料到後台,想要透過ajax的方式來post資料,但validator又一定需要把要驗證的<input>包在<form>裡面的情況下(如果把<form>拿掉,就不會有驗證效果),要如何觸發表單驗證?

...繼續閱讀 »

SQL在使用JOIN時的一些原理

以前寫SQL用到INNER JOIN時,都自以為SQL會依照順序用等號左邊的資料表(驅動表)欄位去找等號右邊的資料表(被驅動表)欄位的資料

所以應該用資料量較少的Table去當驅動表去JOIN資料量較多的被驅動表,這樣速度會比較快

後來查資料才知道,我只對一半,用資料量少的資料表去找資料量較多的資料表這觀念是沒問題的。但並不是依照SQL語法由上到下的順序來判定JOIN時的驅動表和被驅動表。誰是驅動誰是被動還是要看執行計畫比較準確,MSSQL預設把有加索引的表當被驅動表,未加索引的表則為驅動表,在不同JOIN時會有不同的結果。

ps:個人猜測如果驅動跟被動表都使用到索引的話,應該是以資料筆數較少的表當做驅動表,但這只是個人猜測,還沒做過驗證。

...繼續閱讀 »