這是備份網站。主網站位於http://www.dotblogs.com.tw/mis2000lab/
MIS2000 Lab's ASP.NET & Linux (Trad. Chinese 正體中文;Big5)。這個網站,是我們(MIS2000 Lab.資訊工作室)多年教學的實際心得與上課範例,有ASP.NET程式設計,也有Linux的相關文件。
編輯。
您也可以直接參觀主網站
MIS2000 Lab. is MVP 2008-2017/7/1 for ASP/ASP.NET.
2018年6月8日 星期五
[ASP.NET MVC] MVC+WebForm專案
FAQ:一個ASP.NET專案裡面,如何同時跑 MVC + Web Form呢?
其實一點都不難,請看示範。 影片 https://youtu.be/f685NcahMps
其中也會看到不同情況下的錯誤訊息也不同。
影片末段提及「如果想要去除Web Form的檢視(視圖)引擎」,
請在專案「根目錄」下的Global.asax檔案裡面的Application_Start方法中,
加入這一句「RemoveWebFormEngines();」(放在上方)。
*** ASP.NET MVC的正式課程、教學影片 ***
第一階段已經完成,想參與的朋友請與我聯繫(E-Mail在封面、影片一開始都有說明。)
2018年6月2日 星期六
[ASP.NET MVC] 03-1(補充)改用EF Designer產生 Model 類別檔
這是第三天課程的「補充」教學,
改用EF Designer產生 Model 類別檔。以及必要的修改。
其餘的部分,如Controller 與 View可以沿用第三天既有的範例。
[ASP.NET MVC] 01-1 初學者的第一堂課
影片網址(Youtube) https://youtu.be/9spaHik87-A
== 正式課程 的 影片 ==
影片網址(Youtube) https://youtu.be/9spaHik87-A
(1) 網頁程式,能做出哪些功能?市面上常見的商業網站,哪些是我學完後也能做到?
(2) MVC對初學者來說,門檻是否太高?適合初學者嗎?
(3) MVC的流程為何?講一大堆理論,看不懂怎麼辦?(別擔心~第一個範例就豁然開朗)
(4) Controller與 Views之間的互動。
(5) Routing入門(第一次入門,後續課程還會加強)
影片網址(Youtube) https://youtu.be/9spaHik87-A
範例下載 onedrive.live.com/?id=6F7F668080F24B20%212031&cid=6F7F668080F24B20
ASP.NET MVC 電子書(85頁)下載 www.syncfusion.com/ebooks/ASPNET_MVC_Succinctly?utm_source=promo_email&utm_medium=edm&utm_campaign=springaspmvcpromoedmaebapr18
== 正式課程 的 影片 ==
影片網址(Youtube) https://youtu.be/9spaHik87-A
(1) 網頁程式,能做出哪些功能?市面上常見的商業網站,哪些是我學完後也能做到?
(2) MVC對初學者來說,門檻是否太高?適合初學者嗎?
(3) MVC的流程為何?講一大堆理論,看不懂怎麼辦?(別擔心~第一個範例就豁然開朗)
(4) Controller與 Views之間的互動。
(5) Routing入門(第一次入門,後續課程還會加強)
影片網址(Youtube) https://youtu.be/9spaHik87-A
範例下載 onedrive.live.com/?id=6F7F668080F24B20%212031&cid=6F7F668080F24B20
ASP.NET MVC 電子書(85頁)下載 www.syncfusion.com/ebooks/ASPNET_MVC_Succinctly?utm_source=promo_email&utm_medium=edm&utm_campaign=springaspmvcpromoedmaebapr18
2018年5月28日 星期一
[舊學員回娘家] 免費 四天 ASP.NET MVC影片 給您觀賞
之前上過課的學員(不分實體教室上課、或遠距教學)
只要回信,我就給您四天 "免費'" 的ASP.NET MVC影片(課程)
**** 以下的活動已經 "主動發信" 通知 ****
**** 但有些學員的信件無法聯繫,故在此公告 ****
您好,我是 MIS2000 Lab.
非常感謝您曾經參與 我的 ASP.NET (Web Form)課程
我錄製了 ASP.NET MVC課程(預計會有四門課,每堂課的時間約 1.5 ~ 3小時)
免費! 是的,免費要給 "舊學員"觀賞。
目前進度已經完成
MVC學習影片,播放清單 --
https://www.youtube.com/playlist?list=PLDYKbP0m4U_W3HsTQw2wF55sESyheRD6h
[ASP.NET MVC] 01 初學者的第一門課(課程分成三段)https://youtu.be/-Cdv_IEn_tw
[ASP.NET MVC] 02 Razor與HTML表單(課程分成兩段)。
[ASP.NET MVC] 03 第一個搭配資料庫的MVC範例。(課程分成三段)
== [補充課程] ===================
完成第三節課以後,我最想呈獻給各位(Web Form 舊學員)的就是這一門課!
[ASP.NET MVC] 補充 ADO.NET搭配資料庫的MVC範例。
[ASP.NET MVC] 05-1 驗證 Validation。 課程有兩段,第一段課程 1.5小時 已公開,詳見
https://www.youtube.com/watch?v=ZLOpJrXBASM
[ASP.NET MVC] 05-2 自訂驗證 Custom Validation。1小時。
[ASP.NET MVC] 06-1 關連式資料表 與 .include()。2小時。
[ASP.NET MVC] 06-2 透過SQL Profiler 觀察 .include()轉成什麼樣的 T-SQL指令。1小時。
免費分享的影片(如上圖)已完成,並且把影片網址提供給您。
2018/5/31 發信通知 "第一批" 已報名之舊學員。
2018/6/21 全數重新錄製,二次上架(因為第一次的影片,聲音斷續)
影片放在 YouTube上,私人使用,
所以需要您的資料(E-Mail)才能開放給您看
一般人即使有網址,仍看不到
如不嫌棄,請提供您「登入YouTube」的帳號(也就是E-Mail)
如下圖說明:

您必須登入 YouTube,也就是能為影片按「喜歡」或「不喜歡」的權限
才是登入YouTube喔~
請提供您的資料:
(1) 登入 Youtube的 E-Mail:
(2) 姓名:(跟當年報名課程的姓名一樣,作為確認)
(3) 手機:
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
(at) 就是 @ 符號
(舊學員報名的 "截止"時間至 2018/8/1 晚上23:59:59,依照來信的日期時間為準。逾期不候)
完成影片後,會主動通知各位。
再一次謝謝您
MIS2000 Lab. 敬上
只要回信,我就給您四天 "免費'" 的ASP.NET MVC影片(課程)
**** 以下的活動已經 "主動發信" 通知 ****
**** 但有些學員的信件無法聯繫,故在此公告 ****
您好,我是 MIS2000 Lab.
非常感謝您曾經參與 我的 ASP.NET (Web Form)課程
我錄製了 ASP.NET MVC課程(預計會有四門課,每堂課的時間約 1.5 ~ 3小時)
免費! 是的,免費要給 "舊學員"觀賞。
目前進度已經完成
MVC學習影片,播放清單 --
https://www.youtube.com/playlist?list=PLDYKbP0m4U_W3HsTQw2wF55sESyheRD6h
[ASP.NET MVC] 01 初學者的第一門課(課程分成三段)https://youtu.be/-Cdv_IEn_tw
[ASP.NET MVC] 02 Razor與HTML表單(課程分成兩段)。
[ASP.NET MVC] 03 第一個搭配資料庫的MVC範例。(課程分成三段)
== [補充課程] ===================
完成第三節課以後,我最想呈獻給各位(Web Form 舊學員)的就是這一門課!
[ASP.NET MVC] 補充 ADO.NET搭配資料庫的MVC範例。
[ASP.NET MVC] 05-1 驗證 Validation。 課程有兩段,第一段課程 1.5小時 已公開,詳見
https://www.youtube.com/watch?v=ZLOpJrXBASM
[ASP.NET MVC] 05-2 自訂驗證 Custom Validation。1小時。
[ASP.NET MVC] 06-1 關連式資料表 與 .include()。2小時。
[ASP.NET MVC] 06-2 透過SQL Profiler 觀察 .include()轉成什麼樣的 T-SQL指令。1小時。
免費分享的影片(如上圖)已完成,並且把影片網址提供給您。
2018/5/31 發信通知 "第一批" 已報名之舊學員。
2018/6/21 全數重新錄製,二次上架(因為第一次的影片,聲音斷續)
影片放在 YouTube上,私人使用,
所以需要您的資料(E-Mail)才能開放給您看
一般人即使有網址,仍看不到
如不嫌棄,請提供您「登入YouTube」的帳號(也就是E-Mail)
如下圖說明:

您必須登入 YouTube,也就是能為影片按「喜歡」或「不喜歡」的權限
才是登入YouTube喔~
請提供您的資料:
(1) 登入 Youtube的 E-Mail:
(2) 姓名:(跟當年報名課程的姓名一樣,作為確認)
(3) 手機:
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
請來信 school (at) mis2000lab.net 或是 mis2000lab (at) yahoo.com.tw
(at) 就是 @ 符號
(舊學員報名的 "截止"時間至 2018/8/1 晚上23:59:59,依照來信的日期時間為準。逾期不候)
完成影片後,會主動通知各位。
再一次謝謝您
MIS2000 Lab. 敬上
標籤:
ASP.NET,
ASP.NET MVC,
asp.net專題實務,
MVC免費教學,
MVC免費影片,
MVC影片,
YouTube
2018年5月18日 星期五
[ASP.NET MVC] 05-1 驗證 Validation(正式課程的影片)
[舊學員回娘家] 免費 四天 ASP.NET MVC影片 給您觀賞
https://mis2000lab.blogspot.tw/2018/05/aspnet-mvc_28.html
之前上過課的學員(不分實體教室上課、或遠距教學)
只要回信,我就給您四天 "免費'" 的ASP.NET MVC影片(課程)
只要回信,我就給您四天 "免費'" 的ASP.NET MVC影片(課程)
https://mis2000lab.blogspot.tw/2018/05/aspnet-mvc_28.html
標籤:
正式課程,
驗證,
ASP.NET,
ASP.NET MVC,
MVC,
MVC課程,
Validation
[職場]萬般帶不去,唯有業隨身 -- 領22K的員工,在職場上該付出多少?
今天看見一篇超棒的文章,也分享給大家看看
文章標題「萬般帶不去,唯有業隨身」,也是這篇文章裡面學到的。
原文出處應該是這裡(中國) http://tieba.baidu.com/p/2985222509
我只引述這篇文章的第一段:
以文章裡面,***第一段***的說明,我覺得很貼切。
以我為例,我當初就是做的比老闆要求的「多」,四年後(國防役期滿)老闆才加薪34%要我留下來。
以我為例,我當一個上課的講師,會因為一天的課只收到一天的錢,拒絕回答學員(課後)的問題嗎?
(前提是:這是我會的領域。.... 如果我不會,當然幫不了你)
切!.....我連論壇上的 "免費"問題,都樂於回答了,哪會計較這些?
我沒有「計較」有沒有錢,才決定自己該不該行動
所以我累積多年的熱情,在這幾年給了我很大的回報
讓我的書、課程、知名度提升,而有多餘收入。
倘若我當年斤斤計較,會有今天的我嗎????
我不能改變老闆、產業、環境,
但我可以「要求」我自己。
***表面上我吃虧***,幾年後來看,我可賺多了!!
相關文章不用多說了,以前我發表過很多。
1. 老闆給我 22K,我只做 22K的事
2. 老闆給我 22K,我願意做的更好 (但前提是:沒人跟你保證你好好做,薪水會提升喔!)
怎麼作?最後還是自己的選擇....
選了,就會有不同的結果(但,沒人知道結果好壞?)
選了,就不要後悔,也不要抱怨
上面這篇文章其實是一面「鏡子」
他反應的不是「老闆」的慷慨或是吝嗇,
他反映了我們自己的「態度」..............
寫程式的人(我想會來我網站的讀者,大多是寫程式的吧?)
1. 老闆給我 22K,我只做 22K的事(程式會動就好,雖然我可以改好,但我故意不讓它更好.....誰叫你給我薪資少)
2. 老闆給我 22K,我願意做的更好 (只要我會,我就作,不留一手....但前提是:沒人跟你保證你好好做,薪水會提升喔!)
金剛經說:「心無所住」
「若菩薩心住於法,而行布施,如人入闇,即無所見。
若菩薩心不住法,而行布施,如人有目,日光明照,見種種色。」
意思是說:心裡有期盼,想要獲得對應的效應(好處、回饋),才「刻意」去行善。往往一無所得。
行善,不應該有預設立場。最好也不要求回報。
若菩薩心不住法,而行布施,如人有目,日光明照,見種種色。」
意思是說:心裡有期盼,想要獲得對應的效應(好處、回饋),才「刻意」去行善。往往一無所得。
行善,不應該有預設立場。最好也不要求回報。
職場,會不會也是這樣?.....我不知道、我也不敢保證,因為那是你的選擇,你的人生
上面的文章,結尾是這樣的:
「萬般帶不去,唯有業隨身」。這個「業」不妨這樣解:一是做得好的技能,一是想做好的態度。
有這份「業」在,不愁找不到舞台。但這份「業」不是白來的——在你月薪22k的時候,就要像月薪4w那樣做事,那沒到手的18k,就是修鍊這份「業」的學費。
這兩篇文章當作結尾,非常合適
危機?或是轉機?在於自己一念之間
這一念之間,就是看自己面對事情的「態度」了
施文彬:「只出得起香蕉的公司,當然只請得到猴子」#1.....(執行力 與 藉口) 與其想得太多,不如立刻動手作
施文彬:「只出得起香蕉的公司,當然只請得到猴子」#2.....人家不拿的「香蕉」,或許是年輕人最大的機會!
書裡看來的小故事----
禪師:「這世界上,有兩種人。 一種人不知道他來世界上作什麼?」
信徒:「喔!那麼,另外一種人,就是正確地走在人生的道路上嗎?」
禪師:「不!! 另外一種人,
以為會有好幾個"下輩子",可以讓他不斷犯錯........」
我唸誦的第一本金剛經,書本第一頁上面就寫了「應無所住,而生其心」
一直到現在,我都覺得這句話充滿了「不可說盡」的哲理
把上面的小故事,改成「職場」,或許您會領悟出來
我不知道工作要幹嘛?除了養家活口(賺錢)以外,我沒有目標
(但我做、做、做.....我在我討厭的程式設計上,找到一席之地,從裡面找到 "我能作"的東西 ,也因為自己做得來,久了就有 興致)
有些人在職場上,總是抱怨、放棄、離開......(陷入惡性循環、無窮迴圈)
心想下一份工作會更好,
但是,一個人,一輩子有多少職場光陰可以揮霍呢?
另一則小故事:
一位佛友電話抱怨道:為什麼我努力了還是得不到?念經行善了但命運卻不變?
師:我給你寄五百塊錢來好不好?
眾:師父,你的錢我不敢要呢!
師:我是要你幫我辦一件事。
眾:師父,你說辦什麼,我絕對幫你辦好!
師:幫我買一輛汽車。
眾:(大吃一驚)師父,五百塊怎麼能買到汽車呢?!
師:你知道五百塊買不到汽車!可是世上有太多的人都在絞盡腦汁,想付出一點,就得到很多。
你每月從老闆手裡領工資,
老闆 給的錢多 就多幹點,否則少幹點。
老闆 對你好的時候 就多幹點,否則也少幹點。
老闆在公司的時候 就多幹點,否則就少幹點。
你現在,肯定以為自己是為老闆工作。
可是十幾年以後,你會發現 完全不是這樣...
2012/12/10補充:如同我的當初的想法,很多人覺得我在幫「資方」講話
是奴隸銀行的幫兇、幫「慣老闆」講話漂白、協助欺壓年輕人.....等等
我這篇文章的重點,就是「選擇」,也只有講到「選擇」........一切都是自己的選擇。
文章標題:領22K的員工,在職場上該 "付出" 多少?
面對問題時,自己怎麼 "選擇",........會影響到五年後、十年後的自己
結論就是「選擇」!!
[職場]老闆的一百分與員工的一百分(兼論:學歷、文憑,職場的潛規則)
職場]老闆的一百分與員工的一百分
昨天看見電視,忘記是哪個節目,哪位老闆的談話了
但非常有道理。
這位老闆針對年輕人求職、工作的態度,這樣說:
昨天看見電視,忘記是哪個節目,哪位老闆的談話了
但非常有道理。
這位老闆針對年輕人求職、工作的態度,這樣說:
2012/2/8 補充: 謝謝網友Lonka指正,這位老闆是 聯電榮譽副董事長 宣明智
我(老闆)底下有一百個員工,
你做不好,對我(老闆)來說,我仍然有99分
而你(員工),卻是零分!
如果你(員工)能做得好,把自己提升到 1.5或是 2倍的優秀,
對我(老闆)來說,我可能是 102分。
但對你自己來說,你的職場生涯卻會變成 150~200分。
所以,在職場上,千萬要記住:是為自己而工作!
如果覺得老闆或公司不好,
最好的方法是「努力學完、讓自己經歷完整」後,趕緊跳槽。
畢竟,學得到東西,都是自己的。
學不到就跳槽,還是半桶水(沒用的、不完整的經驗,對自己沒幫助)
在學校,要付錢學東西。 學到的東西,大多不管用!
在職場,老闆讓你學東西,還付錢!為什麼不努力學習??
而你(員工),卻是零分!
如果你(員工)能做得好,把自己提升到 1.5或是 2倍的優秀,
對我(老闆)來說,我可能是 102分。
但對你自己來說,你的職場生涯卻會變成 150~200分。
所以,在職場上,千萬要記住:是為自己而工作!
如果覺得老闆或公司不好,
最好的方法是「努力學完、讓自己經歷完整」後,趕緊跳槽。
畢竟,學得到東西,都是自己的。
學不到就跳槽,還是半桶水(沒用的、不完整的經驗,對自己沒幫助)
在學校,要付錢學東西。 學到的東西,大多不管用!
在職場,老闆讓你學東西,還付錢!為什麼不努力學習??
我的註解:
很多人,不太懂「工作態度」的意思。
很多人都批評「XX族,工作態度不佳」,那要怎麼改善呢?
上面這位老闆的說法,就是在講「工作態度」
領一份錢,做 "完"一件事
或是 領一份錢,做好一件事
(累積每一件事的「經驗」,是為了自己以後的職場人生。......想通這一點,應該不會做出「工作態度不好」的舉動)
如果您還是不懂上面兩句話的差異,那麼您被稱為草莓族或是XX族的機率會大增......請看這裡 http://www.jojam.tw/blog/post/29419917
[轉貼][職場]七年級後段班 --- 新游牧族 不到3個月就離職
[IT人應該看] 離職前,一堂價值非凡的課
=======================================================
不管自己在這家公司,做得好、或是不好
離職後,到了另一家公司,不過就是爬另一座山
原本公司的同仁(或老闆)不過是繼續爬同一座山
每座山,在您攀爬的過程、或是登頂以後,各有不同的風景,
記得跟別座山的老朋友,遠遠地打聲招呼....詳見全文
=======================================================
轉貼,學歷與文憑的關係
http://www.mobile01.com/topicdetail.php?f=37&t=2514523&last=32894192
文憑不過是一張車票,
碩士是高鐵,大學是自強號,專科是普通車,高中是站票。
到站後,都下車找工作,才發現 老闆並不太關心你是怎麼來的,只關心你會做什麼。
我的註解:
上面忘了說一件事,你坐高鐵,提早到達,可以有很多時間、很多選擇去嘗試、去磨練
晚來的,比較慢到的,就會辛苦「很多」!!
學歷不是萬靈丹,但在一開始求職時(社會新鮮人),前些年絕對有幫助!
我的衷心建議:不要為了多玩樂四年,去讀「後段班大學」或是「自己都不知道要幹嘛的科系」
除非您入學以後,徹底覺醒,卯起來拼!
不然的話,很難逆轉(不是絕對無望,以統計的角度來看,機率偏低)
這是我自己的人生經驗。
我繞了很遠的路,才能洗掉 "不漂亮"學歷的包袱。
累積很久的工作經驗(甚至老是被派到屎缺、接人家不做的事情),才能慢慢跳到好一點的公司、卡到像樣的位置。
我自己要提拔我的學弟妹(剛畢業的新鮮人),在我老闆那關就被卡死。
當人家不認識你的時候,當自己工作經驗不多(無法凸顯自己)的時候,學歷的印象分數很重要!!
它(文憑)代表著「做什麼,像什麼」。
在求學階段,自己是否針對學生身份有努力過?有認真唸書、有正視自己「身為學生」的責任
這也是將來「工作態度」的一種評估
我一直到後來才慢慢發覺這種職場的「潛規則」
這是我自己的人生經驗。
=======================================================
相關文章:
[轉貼][職場]翁靜玉老師 : 專注第一專長 勝過千百個專長
[職場]我怎麼找人?....如何避開一些個人(工作)履歷上的缺陷
[給初學者的話] 與其想得太多,不如立刻動手作 #1
[給初學者的話] 與其想得太多,不如立刻動手作#2 -- 興趣與工作
[感想][職場] 新鮮人求職......先卡位,再說!
[職場]自己養不到最優秀的人才
[IT人應該看] 離職前,一堂價值非凡的課
[職場] 該去?該留?一切順風.....推薦王文華的文章,「風吹乾了我就走」
[轉貼]全盤接受自己的人生,在徹底悲觀的背面,樂觀才會出現
[職場]萬般帶不去,唯有業隨身 -- 領22K的員工,在職場上該付出多少?...這就是自己的「態度」
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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
2018年5月17日 星期四
ASP.NET MVC 日期區間 & 日期範圍的驗證
簡單的說,因為 jQuery版本異動,所以 ASP.NET MVC這個驗證不會動。
[Range(typeof(DateTime) , .......] //日期區間 & 日期範圍的驗證

請看下面第二篇文章(超連結)的說明
有三種解法:
第一,前端驗證,透過 JavaScript或 jQuery來做
直接複製貼上,微調後就能使用,這是最簡單的作法(詳見下面 第二點解法 的文章超連結)
第二,自訂驗證(Custom Validatiion)屬性
自己寫一個類別檔來做
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
就能搭配 [MyValidateDateRange(MyStartDate = "1/1/1950", MyEndDate = "1/1/2025", ErrorMessage = ".....")]
請看 https://stackoverflow.com/questions/27182606/asp-mvc-5-client-validation-for-range-of-datetimes
第三,自訂驗證模型(IValidatableObject)
把驗證規則,寫在對應這個資料表的類別檔裡面
請看 https://stackoverflow.com/questions/21777412/mvc-model-validation-for-date
很巧的是:有兩篇 好文章 剛好解決了上面四件事,
包含:說明了「jQuery版本異動,導致日期區間的驗證失效」這件事
上述的第二個解法,我測試過,不會動,
可能年代相隔了一陣子,有些異動。
所以提供我微調後,會動的範例。如下:
== Models目錄底下的 UserTable.cs ==
需要驗證的資料表欄位(名為UserBirthDay,也是這個類別的屬性)
[Display(Name = "生日(UserBirthDay)")]
[DataType(DataType.Date)]
// *** 因為 jQuery改版,後續變成有問題 ***
// 設定日期區間(月/日/年)的驗證
//[Range(typeof(DateTime), "1/1/1950", "1/1/2025" ,ErrorMessage = "日期區間,只能在1950年以後~2025年之前")]
// *** 自訂驗證 Custom Validation 屬性 ***
[MyValidateDateRange(MyStartDate = "1/1/1950", MyEndDate = "1/1/2025", ErrorMessage = "日期區間,只能在1950年以後~2025年之前")]
public DateTime UserBirthDay { get; set; }
== Models目錄底下,自己加入一個類別檔 ==
(1) 建議檔名的末端,使用 Attribute字樣
(2) 最上方,加入命名空間。using System.ComponentModel.DataAnnotations;
(3) public class MyValidateDateRangeAttribute : ValidationAttribute
您的類別名稱後面加上「 : ValidationAttribute 」
(4)
public string MyStartDate { get; set; }
public string MyEndDate { get; set; }
(5)
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// https://msdn.microsoft.com/zh-tw/library/dd730022(v=vs.110).aspx
//參數 (1) value : System.Object 要驗證的值。 (2) validationContext : 驗證作業的相關內容資訊。
//傳回值 : ValidationResult 類別的執行個體。
DateTime dt = (DateTime)value; // 日期區間(起迄日)
if (dt >= Convert.ToDateTime(MyStartDate) && dt <= Convert.ToDateTime(MyEndDate))
{
return ValidationResult.Success; // 驗證成功
}
else
{ // 第一種作法,驗證失敗會出現這一句錯誤訊息。
//return new ValidationResult("[自訂驗證 的 錯誤訊息] 抱歉~日期區間,不符合或超出範圍");
//第二種作法,這裡使用空字串。驗證失敗就會使用 [ ErrorMessage=""]這裡的錯誤訊息
return new ValidationResult("");
}
}
萬分感激 Saket 大大 他的說明淺顯易懂,一次提供兩種解法
如果您可以登入的話,請別忘了給他 按讚! 鼓勵他無私的貢獻
請看 https://stackoverflow.com/questions/27182606/asp-mvc-5-client-validation-for-range-of-datetimes
[Range(typeof(DateTime) , .......] //日期區間 & 日期範圍的驗證

請看下面第二篇文章(超連結)的說明
Note: jQuery validation does not work with the Range attribute and DateTime. For example, the following code will always display a client side validation error, even when the date is in the specified range:
[Range(typeof(DateTime), "1/1/1966", "1/1/2020")]
You will need to disable jQuery date validation to use the Range attribute with DateTime. It's generally not a good practice to compile hard dates in your models, so using the Range attribute and DateTime is discouraged.
有三種解法:
第一,前端驗證,透過 JavaScript或 jQuery來做
直接複製貼上,微調後就能使用,這是最簡單的作法(詳見下面 第二點解法 的文章超連結)
第二,自訂驗證(Custom Validatiion)屬性
自己寫一個類別檔來做
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
就能搭配 [MyValidateDateRange(MyStartDate = "1/1/1950", MyEndDate = "1/1/2025", ErrorMessage = ".....")]
請看 https://stackoverflow.com/questions/27182606/asp-mvc-5-client-validation-for-range-of-datetimes
第三,自訂驗證模型(IValidatableObject)
把驗證規則,寫在對應這個資料表的類別檔裡面
請看 https://stackoverflow.com/questions/21777412/mvc-model-validation-for-date
很巧的是:有兩篇 好文章 剛好解決了上面四件事,
包含:說明了「jQuery版本異動,導致日期區間的驗證失效」這件事
上述的第二個解法,我測試過,不會動,
可能年代相隔了一陣子,有些異動。
所以提供我微調後,會動的範例。如下:
== Models目錄底下的 UserTable.cs ==
需要驗證的資料表欄位(名為UserBirthDay,也是這個類別的屬性)
[Display(Name = "生日(UserBirthDay)")]
[DataType(DataType.Date)]
// *** 因為 jQuery改版,後續變成有問題 ***
// 設定日期區間(月/日/年)的驗證
//[Range(typeof(DateTime), "1/1/1950", "1/1/2025" ,ErrorMessage = "日期區間,只能在1950年以後~2025年之前")]
// *** 自訂驗證 Custom Validation 屬性 ***
[MyValidateDateRange(MyStartDate = "1/1/1950", MyEndDate = "1/1/2025", ErrorMessage = "日期區間,只能在1950年以後~2025年之前")]
public DateTime UserBirthDay { get; set; }
== Models目錄底下,自己加入一個類別檔 ==
(1) 建議檔名的末端,使用 Attribute字樣
(2) 最上方,加入命名空間。using System.ComponentModel.DataAnnotations;
(3) public class MyValidateDateRangeAttribute : ValidationAttribute
您的類別名稱後面加上「 : ValidationAttribute 」
(4)
public string MyStartDate { get; set; }
public string MyEndDate { get; set; }
(5)
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// https://msdn.microsoft.com/zh-tw/library/dd730022(v=vs.110).aspx
//參數 (1) value : System.Object 要驗證的值。 (2) validationContext : 驗證作業的相關內容資訊。
//傳回值 : ValidationResult 類別的執行個體。
DateTime dt = (DateTime)value; // 日期區間(起迄日)
if (dt >= Convert.ToDateTime(MyStartDate) && dt <= Convert.ToDateTime(MyEndDate))
{
return ValidationResult.Success; // 驗證成功
}
else
{ // 第一種作法,驗證失敗會出現這一句錯誤訊息。
//return new ValidationResult("[自訂驗證 的 錯誤訊息] 抱歉~日期區間,不符合或超出範圍");
//第二種作法,這裡使用空字串。驗證失敗就會使用 [ ErrorMessage=""]這裡的錯誤訊息
return new ValidationResult("");
}
}
萬分感激 Saket 大大 他的說明淺顯易懂,一次提供兩種解法
如果您可以登入的話,請別忘了給他 按讚! 鼓勵他無私的貢獻
請看 https://stackoverflow.com/questions/27182606/asp-mvc-5-client-validation-for-range-of-datetimes
標籤:
日期區間,
日期範圍,
日期驗證,
驗證,
ASP.NET MVC,
MVC,
Range,
Validation
[發問前,先想想] 人我之間的區隔,真的很難瞭解嗎?
[情境題] Q : 我是一個駕訓班的教練,教各位開車、上路、考駕照(路考)。
如果有一天,您的車輛(硬體)壞了,我這個教練需要負責嗎?
或許,我是這行業的人,所以某些車輛(硬體)出問題,我"剛好"有經驗,"可能"能幫一點小忙,
但沒法跟您掛保證(100%全都能解決)。
「聞道有先後、術業有專攻」,
這社會分工很細緻,真的有問題,「找對人」很重要。
您買了一份餐點,能享用的範圍就是 "這份" 餐點。
櫃臺裡面其他餐點,是要付費的。
絕對沒有「免費」、「順便嚐嚐看」這回事。
您買了一本書,學到的就是 "這本書" 的知識。
如果需要其他的知識,就要買其他的書來學習。
絕對沒有買一本書以後,全世界的知識「都可以 "順便" 學會」這種事(做白日夢也不會這樣想、百科全書也做不到)
*******************************************************
什麼叫做「順便問問而已,沒有答案也沒關係」
*******************************************************
那麼,你怎麼不順便付錢(匯款)給我處理
處理不了也沒關係(不用退費)??
經典電影「阿甘正傳」最著名的一句話,就是
Stupid is as stupid does.
蠢,不是指一個人的智商高低。而是指「他做了蠢事」。
圖片來源 https://i.pinimg.com/originals/b8/e5/c5/b8e5c5ed9ca681b1282d1102355f8c3d.jpg

人我之間的區隔,真的很難瞭解嗎?
不過是「將心比心」四個字而已
2018年4月16日 星期一
ASP.NET MVC分頁(.Skip() 與.Take())
之前的文章,提到網頁程式分頁的寫法。
使用SQL 2012起可用的 OFFSET-FETCH,搭配ADO.NET (DataReader)來做分頁(Paging)。
[讀書心得]資料分頁的最佳化,以SQL 2012的OFFSET-FETCH為例
http://mis2000lab.pixnet.net/blog/post/33836306
[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)
http://mis2000lab.pixnet.net/blog/post/35057446 或是
https://mis2000lab.blogspot.tw/2018/04/ch-14-4-adonet-datareader3sql-2012.html
這個範例改成 ASP.NET MVC 的 LINQ語法,其實大同小異。
原本的SQL指令:
//== 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);
Offset.....與後面的 FETCH,其實跟下面的 .Skip() 與 .Take() 功能類同。
(from m in _db.UserTables
orderby m.UserId // 若寫 descending ,則是反排序(由大到小)
select m).Skip(NowPageCount).Take(PageSize);
======= 程式碼如下 ======================(start)
======= 程式碼如上 ======================(end)
執行時,自行輸入「URL網址」與「頁數」即可
例如:http://....../控制器名稱/IndexPage/3

如下圖。畫面最底下的「分頁列」也可以套用,
跟以前的寫法一樣,幾乎不需更動。
唯一更動的地方就是上面提到的:「ADO.NET + SQL指令」改成「LINQ」


使用SQL 2012起可用的 OFFSET-FETCH,搭配ADO.NET (DataReader)來做分頁(Paging)。
[讀書心得]資料分頁的最佳化,以SQL 2012的OFFSET-FETCH為例
http://mis2000lab.pixnet.net/blog/post/33836306
[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)
http://mis2000lab.pixnet.net/blog/post/35057446 或是
https://mis2000lab.blogspot.tw/2018/04/ch-14-4-adonet-datareader3sql-2012.html
這個範例改成 ASP.NET MVC 的 LINQ語法,其實大同小異。
原本的SQL指令:
//== 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);
如果我的說法沒錯的話,這是我「個人」整理出來的重點:
OFFSET X ROWS 代表你忽略了前面幾筆記錄(也就是從這裡 開始讀取,從頭開始算起,第一"頁"的編號請用「零」代表 )
FETCH NEXT Y ROWS ONLY 代表你從「第幾列」向後 讀取 (我 只要 這幾列的記錄即可!)。
Offset.....與後面的 FETCH,其實跟下面的 .Skip() 與 .Take() 功能類同。
(from m in _db.UserTables
orderby m.UserId // 若寫 descending ,則是反排序(由大到小)
select m).Skip(NowPageCount).Take(PageSize);
======= 程式碼如下 ======================(start)
public ActionResult IndexPage(int id=1)
{
// id變數,目前位於第幾頁?
// PageSize變數,每一頁,要展示幾筆記錄?
int PageSize = 3;
// NowPageCount,目前正在觀賞這一頁的紀錄
int NowPageCount = 0;
if (id == 0) {
NowPageCount = (id - 1) * PageSize; // PageSize,每頁展示3筆紀錄(上面設定過了)
}
// 這段指令的 .Skip()與 . Take(),其實跟T-SQL指令的 offset...fetch....很類似(SQL 2012起可用)
var ListAll = (from m in _db.UserTables
orderby m.UserId // 若寫 descending ,則是反排序(由大到小)
select m).Skip(NowPageCount).Take(PageSize); // .Skip() 從哪裡開始(忽略前面幾筆記錄)。 .Take()呈現幾筆記錄
if (ListAll == null)
{ // 找不到任何記錄
return HttpNotFound();
}
else {
return View(ListAll.ToList());
}
}
======= 程式碼如上 ======================(end)
執行時,自行輸入「URL網址」與「頁數」即可
例如:http://....../控制器名稱/IndexPage/3

如下圖。畫面最底下的「分頁列」也可以套用,
跟以前的寫法一樣,幾乎不需更動。
唯一更動的地方就是上面提到的:「ADO.NET + SQL指令」改成「LINQ」


[習題]上集 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省資源

如果您是撰寫 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
速度比起 ROW_Number差不多,
但比較起來,新的寫法比 ROW_Number省資源

上一篇文章,也是透過SQL指令來進行資料分頁
遠比在「HTML畫面上」寫程式分頁快速多了!!
今天看書時,發現一個新的指令
SQL 2012起,多了 OFFSET...FETCH的指令來輔助 Order By,也可以做資料分頁喔。
教學影片 https://www.youtube.com/watch?v=37q5qez6cbU
教學影片 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省資源
沒錯!您還不趕緊去練功.... SQL Server 2012 :分頁處理:認識 OFFSET 和 FETCH 子句
這裡是微軟 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
或是 https://mis2000lab.blogspot.tw/2018/04/aspnet-mvcskip-take.html
相關文章:
本範例的修改版,搭配 jQuery特效:無限下拉的資料呈現 (另一種分頁效果) - jQuery + Web Service + Repeater控制項
標籤:
分頁,
ADO.NET,
ASP.NET WebForm,
asp.net專題實務,
DataReader,
Paging,
Visual Studio,
VS 2015,
VS 2017,
VS2013,
Web Form
訂閱:
文章 (Atom)



