Tomcat 8.0.5
org.apache.catalina.valves.RemoteAddrValve
提供兩個地方可以設定 XML
(針對1.舊版Tomcat的尚可設定,未來可能會拿掉)
1.C:\tomcat-install\conf\Catalina\localhost\
如果檔案不存在的話,就新增一個 manager.xml
2.新版:C:\apache-tomcat-8.0.50\webapps\manager\META-INF
context.xml
內地有個地方還蠻新的介紹 網址:https://www.w3cschool.cn/tomcat/zuxi1k90.html
tomcat 官網(Securing Management Applications)
網址:http://tomcat.apache.org/tomcat-8.0-doc/security-howto.html
2018年3月12日 星期一
2018年3月8日 星期四
【Tomcat】tomcat html Response Headers Cache-Control 200 ExpiresFilter jsp
當你遇到 Status Code:200 OK (from disk cache) 就會 GG
為什麼就會 GG ,因為瀏覽器會先讀取 暫存頁面.而不會先向 SERVER 要新的 頁面內容
透過 Tomcat JSP web.xml 裡面有提供 ExpiresFilter 機制就能處理這樣的狀況或狀態
ExpiresDefault 代表 所有 MIME text/plain image/png application/javascript...
若指定哪種類型 MIME
ExpiresByType text/html
以下這行,就會是 mas-age=0
now plus 0 second
以下這行,比對所有 url 網址
/*
若是Status Code:200 狀態
就會在 Response Headers 加上 Cache-Control: max-age=0
若是Status Code:304 狀態
預設會是略過不處理,這可以接受,因為比對 Server 跟 瀏覽端 雙方都相同狀態的意思
若是要在 tomcat log 中記錄的話
就是要到 C:\apache-tomcat-8.0.50\conf\logging.properties <-- p="">最底下新增一行 org.apache.catalina.filters.ExpiresFilter.level = FINE
醬子就可以了
Tomcat 官網說明
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Expires_Filter
完整規範如下 大家可以參考 官網說明
<-- class="separator" config="" div="" filter.html="" http:="" org.apache.catalina.filters.expiresfilter.level="FINE" style="clear: both; text-align: center;" tomcat-8.0-doc="" tomcat.apache.org="" tomcat="" xpires_filter="">-->
-->
為什麼就會 GG ,因為瀏覽器會先讀取 暫存頁面.而不會先向 SERVER 要新的 頁面內容
透過 Tomcat JSP web.xml 裡面有提供 ExpiresFilter 機制就能處理這樣的狀況或狀態
ExpiresDefault 代表 所有 MIME text/plain image/png application/javascript...
若指定哪種類型 MIME
ExpiresByType text/html
以下這行,就會是 mas-age=0
以下這行,比對所有 url 網址
若是Status Code:200 狀態
就會在 Response Headers 加上 Cache-Control: max-age=0
若是Status Code:304 狀態
預設會是略過不處理,這可以接受,因為比對 Server 跟 瀏覽端 雙方都相同狀態的意思
若是要在 tomcat log 中記錄的話
就是要到 C:\apache-tomcat-8.0.50\conf\logging.properties <-- p="">最底下新增一行 org.apache.catalina.filters.ExpiresFilter.level = FINE
醬子就可以了
Tomcat 官網說明
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#Expires_Filter
完整規範如下 大家可以參考 官網說明
<-- class="separator" config="" div="" filter.html="" http:="" org.apache.catalina.filters.expiresfilter.level="FINE" style="clear: both; text-align: center;" tomcat-8.0-doc="" tomcat.apache.org="" tomcat="" xpires_filter="">-->
-->
2018年3月5日 星期一
【HTML】ActiveXObject("CAPICOM.Store") 錯誤編號:2405
ActiveXObject("CAPICOM.Store")
錯誤編號:2405
查證:有可能是未加入信任網域
2018年2月8日 星期四
【C#】API url parameter 參數 Encode 有趣的規範 cp950
【C#】API url parameter 參數 Encode 有趣的規範
web Client parameter 有含 中文 ,請注意 Api Server 系統 是utf8 接還是 big5 接 你的 參數
如果 api server 是 utf8 ,那很好,因為 html url 本身就是 follower utf8 格式
若 API SERVER 是BIG5 接 參數,請注意,
WEB CLIENT 的程式, 參數必需要再轉成 CP950 encode 編碼
如下:
Encoding cp950 = System.Text.Encoding.Default;
cp950 = Encoding.GetEncoding(950);
string a = HttpUtility.UrlEncode(item.Value, cp950); <----url big5="" nbsp="" p="">
為何要兩道手序,
因為 C# Encoding 有(utf8、utf16、utf32、ASCII) ,
就是沒有 BIG5格式----url>
透過 Encoding GetEncoding 參數 950 幫我們抓 big5 格式回來..
=.=" 果然是美國人寫的程式...不是說要國際化嗎?
另外 網頁的 encodeURIComponent 字串會轉換成 UTF-8
所以程式接的時候是 HttpUtility UrlDecode(url)
但要再轉發 API 的話 就要看 對方 SERVER (參數)吃什麼 ContenType (utf8 or big5 ...)
以上
web Client parameter 有含 中文 ,請注意 Api Server 系統 是utf8 接還是 big5 接 你的 參數
如果 api server 是 utf8 ,那很好,因為 html url 本身就是 follower utf8 格式
若 API SERVER 是BIG5 接 參數,請注意,
WEB CLIENT 的程式, 參數必需要再轉成 CP950 encode 編碼
如下:
Encoding cp950 = System.Text.Encoding.Default;
cp950 = Encoding.GetEncoding(950);
string a = HttpUtility.UrlEncode(item.Value, cp950); <----url big5="" nbsp="" p="">
為何要兩道手序,
因為 C# Encoding 有(utf8、utf16、utf32、ASCII) ,
就是沒有 BIG5格式----url>
透過 Encoding GetEncoding 參數 950 幫我們抓 big5 格式回來..
=.=" 果然是美國人寫的程式...不是說要國際化嗎?
另外 網頁的 encodeURIComponent 字串會轉換成 UTF-8
所以程式接的時候是 HttpUtility UrlDecode(url)
但要再轉發 API 的話 就要看 對方 SERVER (參數)吃什麼 ContenType (utf8 or big5 ...)
以上
【C#】不能 var --->System.Web.HttpUtility.ParseQueryString (NameValueCollection)
【C#】不能 var --->System.Web.HttpUtility.ParseQueryString (NameValueCollection)
要明確然指定 NameValueCollection
要明確然指定 NameValueCollection
2018年2月6日 星期二
2018年2月1日 星期四
【C# NameValueCollection】 針對NameValueCollection 做 LINQ
public static Dictionary ParseQueryString(string queryString)
{
System.Collections.Specialized.NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(queryString);
var a = from key in nvc.Cast()
from value in nvc.GetValues(key)
where key != null
select new { key, value };
return a.ToDictionary(pair => pair.key, pair => pair.value); ;
}
{
System.Collections.Specialized.NameValueCollection nvc = System.Web.HttpUtility.ParseQueryString(queryString);
var a = from key in nvc.Cast
from value in nvc.GetValues(key)
where key != null
select new { key, value };
return a.ToDictionary(pair => pair.key, pair => pair.value); ;
}
2018年1月24日 星期三
【asp.net C#】在HttpClient的DefaultRequestHeaders上設置Cookie Header
可參考:
http://stackoverflow.com/questions/12373738/how-do-i-set-a-cookie-on-httpclients-httprequestmessage/13287224#13287224
https://d-fens.ch/2016/12/27/howto-set-cookie-header-on-defaultrequestheaders-of-httpclient/
重點兩種
【預設:HttpClientHandler(UseCookies=true)】
HttpClient <--httpclienthandler ookiecontainer="" p="">
cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));
【HttpClient <--httpclienthandler p="">
若是:HttpClientHandler(UseCookies=false) 則是手動加入header
httpClient.DefaultRequestHeaders.Add("Cookie", "auth=ArbitrarySessionToken");--httpclienthandler>--httpclienthandler>
http://stackoverflow.com/questions/12373738/how-do-i-set-a-cookie-on-httpclients-httprequestmessage/13287224#13287224
https://d-fens.ch/2016/12/27/howto-set-cookie-header-on-defaultrequestheaders-of-httpclient/
重點兩種
【預設:HttpClientHandler(UseCookies=true)】
HttpClient <--httpclienthandler ookiecontainer="" p="">
cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));
【HttpClient <--httpclienthandler p="">
若是:HttpClientHandler(UseCookies=false) 則是手動加入header
httpClient.DefaultRequestHeaders.Add("Cookie", "auth=ArbitrarySessionToken");--httpclienthandler>--httpclienthandler>
2018年1月22日 星期一
2018年1月17日 星期三
【股票分享】中鋼 成交 2018-01-17 成交單位:25.15
【股票分享】中鋼 成交 2018-01-17 成交單位:25.15
成交 25150元
電子手續費 15
交易稅:75 <=> 20150 * 0.003
淨收:25060元
總共雜費:90元 = 75 + 15
成交 25150元
電子手續費 15
交易稅:75 <=> 20150 * 0.003
淨收:25060元
總共雜費:90元 = 75 + 15
【轉編譯】html javaScript 使用到 encodeURIComponent
【轉編譯】html java 使用到 encodeURIComponent
範例如下:
javascript
原值: http://tw.yahoo.com/
var a =encodeURIComponent('http://tw.yahoo.com/');
a 的編譯後結果 "http%3A%2F%2Ftw.yahoo.com%2F"
如果程式(C#, PHP,jsp, ....xooxxo)要接收「網頁」傳遞過來的值轉成正常的話
以下方式各程式範例
C#
result1 = System.Web.HttpUtility.UrlDecode(html_data);
String result2 = System.Uri.UnescapeDataString(result1);
Jsp
String htmlurl = req.getParameter("a");
htmlurl = java.net.URLDecoder.decode(htmlurl,"UTF-8");
最後說明 encodeURIComponent
主要是會針對特殊符號處理用
W3C 說明:http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp
該方法不會對ASCII 字母和數字進行編碼,也不會對這些ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
其他字符(比如:;/?:@&=+$,# 這些用於分隔URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。
詳細英文說明:
https://blogs.msdn.microsoft.com/yangxind/2006/11/08/dont-use-net-system-uri-unescapedatastring-in-url-decoding/
範例如下:
javascript
原值: http://tw.yahoo.com/
var a =encodeURIComponent('http://tw.yahoo.com/');
a 的編譯後結果 "http%3A%2F%2Ftw.yahoo.com%2F"
如果程式(C#, PHP,jsp, ....xooxxo)要接收「網頁」傳遞過來的值轉成正常的話
以下方式各程式範例
C#
result1 = System.Web.HttpUtility.UrlDecode(html_data);
String result2 = System.Uri.UnescapeDataString(result1);
Jsp
String htmlurl = req.getParameter("a");
htmlurl = java.net.URLDecoder.decode(htmlurl,"UTF-8");
最後說明 encodeURIComponent
主要是會針對特殊符號處理用
W3C 說明:http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp
該方法不會對ASCII 字母和數字進行編碼,也不會對這些ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
其他字符(比如:;/?:@&=+$,# 這些用於分隔URI 組件的標點符號),都是由一個或多個十六進制的轉義序列替換的。
詳細英文說明:
https://blogs.msdn.microsoft.com/yangxind/2006/11/08/dont-use-net-system-uri-unescapedatastring-in-url-decoding/
2018年1月16日 星期二
【Visual Studio 2015】相關下載連結
1.TypeScript for Visual Studio 2015 - 中文(繁體)
https://www.microsoft.com/zh-TW/download/details.aspx?id=48593
版本:2.6.2
File Name:2.6.2-TS-release-dev14update3-20171121.4\TypeScript_Dev14Full.exe
發佈日期:2018/1/12
File Size:10.4 MB
2.Visual Studio 2015的實驗性 ASP.NET Core + Angular模板
https://angular.io/guide/visual-studio-2015
https://www.microsoft.com/zh-TW/download/details.aspx?id=48593
版本:2.6.2
File Name:2.6.2-TS-release-dev14update3-20171121.4\TypeScript_Dev14Full.exe
發佈日期:2018/1/12
File Size:10.4 MB
2.Visual Studio 2015的實驗性 ASP.NET Core + Angular模板
https://angular.io/guide/visual-studio-2015
2018年1月15日 星期一
【NodeJS】官網 下載點 及 VS2015 安裝說明 & IIS 設定
FTP
Node js下載點:
https://nodejs.org/dist/
我是下載 v.6.9.5 版本
VS2015 安裝說明
https://blog.josequinto.com/2016/05/04/how-to-configure-visual-studio-2015-integration-with-latest-version-of-node-js-and-npm/#Node-js
IIS 安裝說明
http://www.xiaoyebailong.com/index.php/2016/10/27/67684.htm
other
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html
Node js下載點:
https://nodejs.org/dist/
我是下載 v.6.9.5 版本
VS2015 安裝說明
https://blog.josequinto.com/2016/05/04/how-to-configure-visual-studio-2015-integration-with-latest-version-of-node-js-and-npm/#Node-js
IIS 安裝說明
http://www.xiaoyebailong.com/index.php/2016/10/27/67684.htm
other
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html
http://gigamine.blogspot.tw/2017/12/webnodejs-expressangularbootstrapwebsto.html
2018年1月10日 星期三
【Windows Tomcat 8 up】startup.bat 一閃 無執行 JAVA_HOME, JRE_HOME, CATALINA_HOME,
請閱讀安裝檔 RUNNING
其中有必要條件幾個項目要在電腦設定,
JDK 套件 包含了 JRE
也可以另外下載 JRE 套件
設定:系統內容\進階\環境變數
【使用者變數】
1.新增
變數名稱:CATALINA_HOME
PATH 指定位置:Tomcat 所在主目錄位置
C:\apache-tomcat-8.0.50
2.新增
變數名稱:JAVA_HOME
Path 路徑:C:\Program Files\Java\jdk1.8.0_112
備註:要完整路徑,否則會有 bat 起不來
3.新增 (請注意,若是要指定 jre 版本.就要新增)
變數名稱:JRE_HOME
Path 路徑:C:\Program Files\Java\jre1.8.0_131
JAVA_HOME 或 JRE_HOME 二擇一
【系統變數】
path
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
or 直接指定
C:\Program Files\Java\jdk1.8.0_112\bin;C:\Program Files\Java\jdk1.8.0_112\jre\bin;
查詢變數是否下對
C:\Users\Administrator \ echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_112
C:\Users\Administrator \ echo %Jre_HOME% <-- p="">C:\Program Files\Java\jre1.8.0_131
C:\Users\Administrator \ echo %CATALINA_HOME%
C:\apache-tomcat-8.0.50
-->
catalina LOG 記錄 |
有指定 JRE_HOME |
只有 JAVA_HOME |
範例設定如下:
有指定 JRE_HOME 畫面 測試是否正確成功的最好方式 Tomcat「安裝」服務 cmd 指令:C:\apache-tomcat-8.0.50\bin\service.bat install 就會看到 using java_home 跟jre_home 路徑 額外 問題 java -version 版本不對 連結1:https://blog.csdn.net/yaozhiwei1019/article/details/77774636 連結2:https://hk.saowen.com/a/cecff7b7ca99a4a51fb28f6f30708fea23b6375271520eb975e927cf30a435b7 |
2018年1月4日 星期四
【css ie 11 v11.0.47 以上 】tab 鍵順序出現問題
【css ie 11 v11.0.47 以上】KB4051034
【問題】
在 href #content
只有ie 11 47 48 49 以上都會有此問題,
因為我Windows Update 只到 ie 11 v46 版,都還正常
chrome 就很正常,firefox 也很正常...就ie v47以上就不正常...IE 真的很特別
2017-11 適用於 Windows 7,x64 架構系統的每月品質彙總套件預覽 (KB4051034)
【解決】
避免問題出現, 還是不關聯在 div 上,直接在 href 上建一個 id=content 就能正常
【問題】
在 href #content
使用 tab 會出現順序問題
只有ie 11 47 48 49 以上都會有此問題,
因為我Windows Update 只到 ie 11 v46 版,都還正常
chrome 就很正常,firefox 也很正常...就ie v47以上就不正常...IE 真的很特別
2017-11 適用於 Windows 7,x64 架構系統的每月品質彙總套件預覽 (KB4051034)
【解決】
避免問題出現, 還是不關聯在 div 上,直接在 href 上建一個 id=content 就能正常
2017年12月21日 星期四
【表單 Form】填寫超過30 分鐘,未操作,透過AJAX 來觸發使用者行為
【表單 Form】填寫超過30 分鐘,未操作,透過AJAX 來觸發使用者行為
避免 被強制清除Session
$(function () {
setInterval(function() {
$.ajax({
url: "Ping.aspx",
cache: false
});
}, 1800000);
});
避免 被強制清除Session
$(function () {
setInterval(function() {
$.ajax({
url: "Ping.aspx",
cache: false
});
}, 1800000);
});
2017年12月19日 星期二
【Asp.net C# Dictionary】Dictionary 包 Dictionary 如何 直接new 資料
【Asp.net C# Dictionary】Dictionary 包 Dictionary 如何 直接new 資料
Dictionary> A =
new Dictionary>()
{
{ 1, new Dictionary {{ "Index", "B"}}}
};
Dictionary
new Dictionary
{
{ 1, new Dictionary
};
2017年12月14日 星期四
【Windows Service 服務 安裝/移除】指令 InstallUtil vs 指令 sc
【指令:InstallUtil】
指令說明網址:https://docs.microsoft.com/zh-tw/dotnet/framework/tools/installutil-exe-installer-tool
MSDN 關於InstallUtil說明網址 :https://msdn.microsoft.com/zh-tw/library/50614e95(v=vs.110).aspx
註冊服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe
刪除服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe /u
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe /u
【指令:sc】
sc create | delete | config 服務名 [參數]
註冊服務
sc create Tomcat binPath= F:\apache-tomcat\bin\startup.bat start= auto
刪除服務(服務名稱)
sc delete MyService
刪除時要先查詢服務名稱
COMMAND 指令
services.msc
指令說明網址:https://docs.microsoft.com/zh-tw/dotnet/framework/tools/installutil-exe-installer-tool
MSDN 關於InstallUtil說明網址 :https://msdn.microsoft.com/zh-tw/library/50614e95(v=vs.110).aspx
註冊服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe
刪除服務
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\MyService.exe /u
or
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\installutil.exe /u
【指令:sc】
sc create | delete | config 服務名 [參數]
註冊服務
sc create Tomcat binPath= F:\apache-tomcat\bin\startup.bat start= auto
刪除服務(服務名稱)
sc delete MyService
刪除時要先查詢服務名稱
COMMAND 指令
services.msc
2017年11月30日 星期四
【Jquery Validate and Unobtrusive )】有趣的 驗證機制 發生 'settings' of undefined
有趣的 驗證機制 發生 'settings' of undefined
在 ASP.MVC 上 頁面提供 驗證 輸入機制
Jquery.Validate (Jquery Validate)
Jquery.Validate.Unobtrusive (Jquery Validate Unobtrusive)
HTML 屬性中 有 data-val="true" 就會去啟用 Jquery.Validate.Unobtrusive 機制
Jquery.Validate.Unobtrusive取代掉Jquery.Vlidate error 錯誤訊息顯示位置
會相對應對照 error 訊息 如下
data-valmsg-for="Name" data-valmsg-replace="true"
並且也會對應到 錯誤訊息總覽(data-valmsg-summary) ,如果你頁面有的話 如下:
如果沒有 data-val="true"
會變成 Jquery.Validate 處理
就會直接在你的 驗證INPUT 下新增一個 error label 錯誤訊息
如果你頁面上沒有任 屬性有 required
但你另在 JavaScript 上新增
$("#Name").rules('add', {
required: true,
messages:{
filecheckvalidation: "身分證-正面(必填)"
}
});
就會發生 錯誤 Jquery.Validate.js 錯誤 如下:
jquery.validate.js:147 Uncaught TypeError: Cannot read property 'settings' of undefined
at n.fn.init.rules (jquery.validate.js:147)
at HTMLDocument. (Index:518)
at i (jquery-1.12.4.min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.12.4.min.js:2)
at Function.ready (jquery-1.12.4.min.js:2)
at HTMLDocument.K (jquery-1.12.4.min.js:2)
因為沒你有啟用 Jquery.validate.js init 機制
必需在 javascript 中先提供 以下指令才會啟用
$("#MyForm").validate(); <--- id="" span="">--->
在 ASP.MVC 上 頁面提供 驗證 輸入機制
Jquery.Validate (Jquery Validate)
Jquery.Validate.Unobtrusive (Jquery Validate Unobtrusive)
HTML 屬性中 有 data-val="true" 就會去啟用 Jquery.Validate.Unobtrusive 機制
Jquery.Validate.Unobtrusive取代掉Jquery.Vlidate error 錯誤訊息顯示位置
會相對應對照 error 訊息 如下
data-valmsg-for="Name" data-valmsg-replace="true"
並且也會對應到 錯誤訊息總覽(data-valmsg-summary) ,如果你頁面有的話 如下:
【無法送出原因如下】
如果沒有 data-val="true"
會變成 Jquery.Validate 處理
就會直接在你的 驗證INPUT 下新增一個 error label 錯誤訊息
如果你頁面上沒有任 屬性有 required
但你另在 JavaScript 上新增
$("#Name").rules('add', {
required: true,
messages:{
filecheckvalidation: "身分證-正面(必填)"
}
});
就會發生 錯誤 Jquery.Validate.js 錯誤 如下:
jquery.validate.js:147 Uncaught TypeError: Cannot read property 'settings' of undefined
at n.fn.init.rules (jquery.validate.js:147)
at HTMLDocument.
at i (jquery-1.12.4.min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.12.4.min.js:2)
at Function.ready (jquery-1.12.4.min.js:2)
at HTMLDocument.K (jquery-1.12.4.min.js:2)
因為沒你有啟用 Jquery.validate.js init 機制
必需在 javascript 中先提供 以下指令才會啟用
$("#MyForm").validate(); <--- id="" span="">--->
2017年11月27日 星期一
【ASP.NET MVC 5】Checkbox 多選 Required 問題
【ASP.NET MVC 5】Checkbox 多選 Required 問題
可參考以下文章:
http://blog.darkthread.net/post-2011-09-02-jquery-validate-ubnotrusive-checkbox-required.aspx
http://blog.degree.no/2012/03/validation-of-required-checkbox-in-asp-net-mvc/
http://itmeze.com/2010/12/06/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3
我的做法
單選就 radiobutton
複選就 checkbox 搭配 ValidationAttribute 使用
但我不使用 boolearn model 搭配 List
至於單選的 CheckBox 呢???嘿嘿嘿
SERVER 跟 CLIENT 都新增
【SERVER 擴充】
public class CheckBoxRequiredAttribute : ValidationAttribute, IClientValidatable
{
public CheckBoxRequiredAttribute()
{
}
public override bool IsValid(object value)
{
bool result = false;
if (value == null)
return result;
List r = value as List;
if (r != null && r.Count > 0)
result = true;
return result;
}
public IEnumerable GetClientValidationRules(
ModelMetadata metadata,
ControllerContext context)
{
var rule = new ModelClientValidationRule()
{
ValidationType = "checkboxrequired",
ErrorMessage = String.Format("{0} 欄位是必要項。", metadata.DisplayName)
};
yield return rule;
}
}
【CLIENT 擴充】
$.validator.unobtrusive.adapters.add("checkboxrequired", function (options) {
可參考以下文章:
http://blog.darkthread.net/post-2011-09-02-jquery-validate-ubnotrusive-checkbox-required.aspx
http://blog.degree.no/2012/03/validation-of-required-checkbox-in-asp-net-mvc/
http://itmeze.com/2010/12/06/checkbox-has-to-be-checked-with-unobtrusive-jquery-validation-and-asp-net-mvc-3
我的做法
單選就 radiobutton
複選就 checkbox 搭配 ValidationAttribute 使用
但我不使用 boolearn model 搭配 List
至於單選的 CheckBox 呢???嘿嘿嘿
SERVER 跟 CLIENT 都新增
【SERVER 擴充】
public class CheckBoxRequiredAttribute : ValidationAttribute, IClientValidatable
{
public CheckBoxRequiredAttribute()
{
}
public override bool IsValid(object value)
{
bool result = false;
if (value == null)
return result;
List
if (r != null && r.Count > 0)
result = true;
return result;
}
public IEnumerable
ModelMetadata metadata,
ControllerContext context)
{
var rule = new ModelClientValidationRule()
{
ValidationType = "checkboxrequired",
ErrorMessage = String.Format("{0} 欄位是必要項。", metadata.DisplayName)
};
yield return rule;
}
}
【CLIENT 擴充】
$.validator.unobtrusive.adapters.add("checkboxrequired", function (options) {
2017年11月6日 星期一
【ASP.NET ASP.MVC】Captcha 文字驗證 + Microsoft.Speech SpeechSynthesizer 語音辨識(文字轉語音服務) for Web Application
【ASP.NET ASP.MVC】Microsoft.Speech 語音辨識 文字轉語音
一、要使用 MVC Captcha
就要用到 https://captchamvc.codeplex.com/
去下載 整包 mvc3、mvc4、mvc5 source code 加到Web專案..
1.調整:Interface\IStorageProvider.cs
新增:ICaptchaValue Value(string token, TokenType tokenType);
2.調整:Infrastructure\SessionStorageProvider.cs
去COPY GetValue 複製一個 public virtual ICaptchaValue Value(string token, TokenType tokenType)
備註 掉//ValidateKeys.Remove(token);
3.調整:CookieStorageProvider
去COPY GetValue 複製一個 改叫 Value
然後引用專案,就可以使用最基本的 Captcha ,要怎麼改隨你怎麼改,可以省點工
二、Microsoft.Speech 語音辨識
1.請先參照該 文章安裝好軟體跟設定檔 如下
網址:http://terryhung.pixnet.net/blog/post/34657057-%E8%AE%93-windows-7-%E5%B0%88%E6%A5%AD%E7%89%88%E3%80%8C%E6%96%87%E5%AD%97%E8%BD%89%E6%8F%9B%E8%AA%9E%E9%9F%B3%E3%80%8D%E5%8F%AF%E4%BB%A5%E9%81%B8%E6%93%87
安裝軟體共有:
01_SpeechPlatformRuntime_x86.msi
02_SpeechPlatformRuntime_x64.msi
03_MSSpeech_TTS_zh-TW_HanHan.msi <--- 1.="" p="">04_Patch_x86.reg
05_Patch_x64.reg
文章外額外要再安裝 (請自行Google =>做人不能太懶)
06.MicrosoftSpeechPlatformSDK_X64.msi <--- br="" erver=""> 07.MicrosoftSpeechPlatformSDK_x86.msi <--- br="" erver=""> --->--->--->
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
--->--->---> <--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">佛心下載: https://www.microsoft.com/en-us/download/details.aspx?id=27226--->--->--->
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
2.引用 Microsoft.Speech (請勿使用內建的:System.Speech )
路徑:C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll
備註:該路徑是因為你裝置了 MicrosoftSpeechPlatformSDK_x86
3.程式碼
我就直接貼圖..做人不能太懶
備註:可以不用Foreach 自行可以用linq 直接找到也比較簡潔
Show 一手 如下:
if (synth != null)
{
Lang = synth.GetInstalledVoices()
.Where(o => o.VoiceInfo.Name.Contains("TW"))
.Select(o=>o.VoiceInfo.Name).FirstOrDefault();
}--->--->--->
<--- 1.="" p="">
---> <--- 1.="" p="">最後:--->
<--- 1.="" p="">1.IIS 不用設定..找了太多冤路....--->
<--- 1.="" p="">2.Speech 有限制系統 --->
<--- 1.="" p=""> 請參考:https://msdn.microsoft.com/en-us/library/hh362873%28v=office.14%29.aspx#Software Requirements--->
3.我的Web 是架在 Windows Server 2008 R2
4.不會寫view 的人,可以參考這篇:https://forums.asp.net/t/2127539.aspx?How+can+I+play+a+wave+file+in+mvc
怕文章GG 我還是貼給圖給大家 如下:
5.html 有很多規格播放 可參考這篇文章,寫的很不錯:https://dotblogs.com.tw/knightzone/2013/11/07/127250
一、要使用 MVC Captcha
就要用到 https://captchamvc.codeplex.com/
去下載 整包 mvc3、mvc4、mvc5 source code 加到Web專案..
1.調整:Interface\IStorageProvider.cs
新增:ICaptchaValue Value(string token, TokenType tokenType);
2.調整:Infrastructure\SessionStorageProvider.cs
去COPY GetValue 複製一個 public virtual ICaptchaValue Value(string token, TokenType tokenType)
備註 掉//ValidateKeys.Remove(token);
3.調整:CookieStorageProvider
去COPY GetValue 複製一個 改叫 Value
然後引用專案,就可以使用最基本的 Captcha ,要怎麼改隨你怎麼改,可以省點工
二、Microsoft.Speech 語音辨識
1.請先參照該 文章安裝好軟體跟設定檔 如下
網址:http://terryhung.pixnet.net/blog/post/34657057-%E8%AE%93-windows-7-%E5%B0%88%E6%A5%AD%E7%89%88%E3%80%8C%E6%96%87%E5%AD%97%E8%BD%89%E6%8F%9B%E8%AA%9E%E9%9F%B3%E3%80%8D%E5%8F%AF%E4%BB%A5%E9%81%B8%E6%93%87
安裝軟體共有:
01_SpeechPlatformRuntime_x86.msi
02_SpeechPlatformRuntime_x64.msi
03_MSSpeech_TTS_zh-TW_HanHan.msi <--- 1.="" p="">04_Patch_x86.reg
05_Patch_x64.reg
文章外額外要再安裝 (請自行Google =>做人不能太懶)
06.MicrosoftSpeechPlatformSDK_X64.msi <--- br="" erver=""> 07.MicrosoftSpeechPlatformSDK_x86.msi <--- br="" erver=""> --->--->--->
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
--->--->---> <--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">佛心下載: https://www.microsoft.com/en-us/download/details.aspx?id=27226--->--->--->
<--- 1.="" p=""><--- br="" erver=""><--- br="" erver="">
2.引用 Microsoft.Speech (請勿使用內建的:System.Speech )
路徑:C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\Microsoft.Speech.dll
備註:該路徑是因為你裝置了 MicrosoftSpeechPlatformSDK_x86
圖示: Microsoft.Speech 引用 |
3.程式碼
我就直接貼圖..做人不能太懶
圖示: Asp.net MVC 使用的程式碼 SpeechSynthesizer |
Show 一手 如下:
if (synth != null)
{
Lang = synth.GetInstalledVoices()
.Where(o => o.VoiceInfo.Name.Contains("TW"))
.Select(o=>o.VoiceInfo.Name).FirstOrDefault();
}--->--->--->
<--- 1.="" p="">
---> <--- 1.="" p="">最後:--->
<--- 1.="" p="">1.IIS 不用設定..找了太多冤路....--->
<--- 1.="" p="">2.Speech 有限制系統 --->
<--- 1.="" p=""> 請參考:https://msdn.microsoft.com/en-us/library/hh362873%28v=office.14%29.aspx#Software Requirements--->
3.我的Web 是架在 Windows Server 2008 R2
4.不會寫view 的人,可以參考這篇:https://forums.asp.net/t/2127539.aspx?How+can+I+play+a+wave+file+in+mvc
怕文章GG 我還是貼給圖給大家 如下:
5.html 有很多規格播放 可參考這篇文章,寫的很不錯:https://dotblogs.com.tw/knightzone/2013/11/07/127250
【ASP.MVC】 剛好裝好SERVER , 佈署 MVC 出現的問題
剛好裝好SERVER , 佈署 MVC 出現的問題
1.500 錯誤 ,請重新安裝
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
2.必安裝 KB980368
安裝此更新可讓處理常式對應能正確地搭配無延伸型 URL 使用。
1.500 錯誤 ,請重新安裝
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir
2.必安裝 KB980368
安裝此更新可讓處理常式對應能正確地搭配無延伸型 URL 使用。
2017年11月1日 星期三
【Bootstrap】(img-responsive) 導致 a:foucs 失效 有陷阱 要注意 導致 tab 鍵
【Bootstrap】img-responsive 有陷阱 要注意 導致 tab 鍵 foucs 失效
(img-responsive) 導致 a:foucs 失效
修正方法
a:focus .img-responsive {
outline-style: dotted;
outline-color: #4169E1;
outline-width: 2px;
}
參考網址:https://stackoverflow.com/questions/24164727/focus-not-working-on-images-during-tab-navigation
(img-responsive) 導致 a:foucs 失效
修正方法
a:focus .img-responsive {
outline-style: dotted;
outline-color: #4169E1;
outline-width: 2px;
}
參考網址:https://stackoverflow.com/questions/24164727/focus-not-working-on-images-during-tab-navigation
2017年10月26日 星期四
【知識分享】網站無障礙規範2.0版 WCAG 2.0
【知識分享】網站無障礙規範2.0版 WCAG 2.0
正版 W3C 無障礙官網
https://www.w3.org/TR/WCAG-TECHS/
臺灣 NCC 網站無障礙官網
https://www.handicap-free.nat.gov.tw/
How to Meet WCAG 2.0
https://www.w3.org/WAI/WCAG20/quickref/
臺灣都是 跟隨 w3c 在走..
表格 :w3c 無障礙規範
https://www.w3.org/WAI/tutorials/tables/multi-level/
正版 W3C 無障礙官網
https://www.w3.org/TR/WCAG-TECHS/
臺灣 NCC 網站無障礙官網
https://www.handicap-free.nat.gov.tw/
How to Meet WCAG 2.0
https://www.w3.org/WAI/WCAG20/quickref/
臺灣都是 跟隨 w3c 在走..
表格 :w3c 無障礙規範
https://www.w3.org/WAI/tutorials/tables/multi-level/
2017年10月2日 星期一
【XML Signature】XML 簽章 簽名 Signature c#
維基說明:https://zh.wikipedia.org/wiki/XML_Signature
Xml 傳送資料格式分兩種
1.soap
2.binary serialization
用徒:
1.銀行 XML 格式傳遞信任方式
2.web api xml 簽章、驗章確認 飛鴿傳書 認可
XML Signature 有點像 OAuth 2.0 ,但又不像
OAuth 2.0 是「信認夥伴」驗證,雙方必需到對方那邊留下資料做「證據」
XML Signature 是 A君「個人印章」在「信封」上蓋章,丟給「郵差」,
郵差丟給「收件人」,「收件人」目視驗證 蓋章 上是否A君的章,若是再打給「信封」查閱內容
Xml 傳送資料格式分兩種
1.soap
2.binary serialization
用徒:
1.銀行 XML 格式傳遞信任方式
2.web api xml 簽章、驗章確認 飛鴿傳書 認可
XML Signature 有點像 OAuth 2.0 ,但又不像
OAuth 2.0 是「信認夥伴」驗證,雙方必需到對方那邊留下資料做「證據」
XML Signature 是 A君「個人印章」在「信封」上蓋章,丟給「郵差」,
郵差丟給「收件人」,「收件人」目視驗證 蓋章 上是否A君的章,若是再打給「信封」查閱內容
2017年9月27日 星期三
【Bootstrap 3】修正 dropdown hover 滑過 自動展開
【Bootstrap 3】修正 dropdown hover 滑過 自動展開
dropdown:hover > ul.dropdown-menu {
display: block;
}
.dropdown-menu {
margin-top: 0;
}
相關連結:https://stackoverflow.com/questions/8878033/how-to-make-twitter-bootstrap-menu-dropdown-on-hover-rather-than-click
dropdown:hover > ul.dropdown-menu {
display: block;
}
.dropdown-menu {
margin-top: 0;
}
相關連結:https://stackoverflow.com/questions/8878033/how-to-make-twitter-bootstrap-menu-dropdown-on-hover-rather-than-click
2017年9月25日 星期一
【Entity Framework】IQueryable VS IEnumerable 用法 或 差別 (ASP NET, Entity Framework,C#)
IQueryable 每次直接撈 DB 資料庫 , 花費 DB 暫存記憶體
IEnumerable 第一次撈 DB 資料庫,花費 DB 暫存記憶體,以及暫存記體在(Web.IIS 程序)上
再撈第二次,直接勞取「暫存記體在(Web.IIS 程序)上」,不再撈 DB
除非 暫存記體在(Web.IIS 程序) 被 Entity Framework 指名 清掉,才會重新撈取
IEnumerable 第一次撈 DB 資料庫,花費 DB 暫存記憶體,以及暫存記體在(Web.IIS 程序)上
再撈第二次,直接勞取「暫存記體在(Web.IIS 程序)上」,不再撈 DB
除非 暫存記體在(Web.IIS 程序) 被 Entity Framework 指名 清掉,才會重新撈取
2017年9月15日 星期五
訂閱:
文章 (Atom)