請在 aspx 建立那個GridView
一個取名gv1
另一個取名gv2
在Load 底下寫入
DataSet ds = new DataSet();
//建立一個tableEMP ,表格取名為Empoyees 為了dataSet讀取 使用
DataTable tableEMP = new DataTable("Empoyees");
tableEMP.Columns.Add("ID",typeof(int));
tableEMP.Columns.Add("Name", typeof(string));
//DataRow 是建立資料欄位 row 欄位名稱
DataRow row = tableEMP.NewRow();
row["ID"] = 1;
row["Name"] = "Joe";
//獎row 把值,對應tableEMP.rows裡面
tableEMP.Rows.Add(row);
//DataTable 加入 dataSet裡面
ds.Tables.Add(tableEMP);
//table 讀取方式 rows 集合物件第0第0欄位
Response.Write(tableEMP.Rows[0][0].ToString() + "");
Response.Write(tableEMP.Rows[0]["ID"].ToString() + "");
//dataSet 讀取方式 Tables表格位置0 或直接找到(表格名稱) / rows[欄] / [值]
Response.Write(ds.Tables["Empoyees"].Rows[0][0].ToString() + "");
Response.Write(ds.Tables[0].Rows[0][0].ToString() + "");
Response.Write(ds.Tables[0].Rows[0]["ID"].ToString() + "");
gv1.DataSource = tableEMP;
gv1.DataBind();//執行
//以下寫法也可以:gv2.DataSource = ds.Tables[0];
gv2.DataSource = ds.Tables["Empoyees"];
gv2.DataBind();//執行
就能知道怎麼用DataTable
2011年8月25日 星期四
2011年8月22日 星期一
2011年8月21日 星期日
jdownloader 亂碼解決方法
亂碼解決方法
1. 軟體設定 > 使用者介面 > 一般 > 外觀 > 樣式 (須重新啟動) > 把"Windows Style" 改為 "Substance Legacy Default"
2. 重新啟動的方法:
> 看最頂的檔案列 (即最頂的5個亂碼選項)
> click第1個"口口"("檔案"二字的亂碼)後會看到4個選項
> click綠色箭頭(即第3個"口口口口"{"重新啟動"四字的亂碼}, mouse移過去會見到"action.restart")
若找不到上面的重新啟動方法, 就right click桌面右下角的"JDownloader"圖示, 按"離開", 然後自行重開"JDownloader"
重新啟動後應可正常顯示
1. 軟體設定 > 使用者介面 > 一般 > 外觀 > 樣式 (須重新啟動) > 把"Windows Style" 改為 "Substance Legacy Default"
2. 重新啟動的方法:
> 看最頂的檔案列 (即最頂的5個亂碼選項)
> click第1個"口口"("檔案"二字的亂碼)後會看到4個選項
> click綠色箭頭(即第3個"口口口口"{"重新啟動"四字的亂碼}, mouse移過去會見到"action.restart")
若找不到上面的重新啟動方法, 就right click桌面右下角的"JDownloader"圖示, 按"離開", 然後自行重開"JDownloader"
重新啟動後應可正常顯示
[ASP.NET][VB][C#] 日期格式速查表
ApplyFormatInEditMode 設成True
HtmlENcode 設成False
HtmlENcode 設成False
Gridview 欄位裡的DataformatString 依以下列表設定。ex:日期格式 2008/09/11 要設成 {0:yyyy/MM/dd}
- 數值資料格式符號
格式符號 說明 C 或 c 貨幣之格式,例:25000之"{0:c}"結果為NT$25,000.00。 D 或 d 十進位之格式,例:25000之"{0:d}"結果為25000。 E 或 e 科學符號之格式,例:25000之"{0:e}"結果為2.500000e+004。 F 或 f Fixed-point之格式,例:25000之"{0:f}"結果為25000.00。 G 或 g 一般之格式,例:25000之"{0:g}"結果為25000。 N 或 n 數字有逗點之格式,例:25000之"{0:n}"結果為25,000.00。 P 或 p 百分比之格式,例:25000之"{0:p}"結果為2,500,000.00%。 X 或 x 十六進位之格式,例:25000之"{0:x}"結果為61a8。
- 日期格式符號
格式符號 說明 d 簡短日期之格式,例:"{0:d}"之結果為1900/1/1。 D 完整日期之格式,例:"{0:D}"之結果為1900年1月1日。 f 完整日期簡短時間之格式,例:"{0:f}"之結果為1900年1月1日 上午 12:00。 F 完整日期時間之格式,例:"{0:F}"之結果為1900年1月1日 上午 12:00:00。 g 簡短日期簡短時間之格式,例:"{0:g}"之結果為1900/1/1 上午 12:00。 G 簡短日期完整時間之格式,例:"{0:G}"之結果為1900/1/1 上午 12:00:00。 M 或 m 月日之格式,例:"{0:m}"之結果為1月1日。 R 或 r RFC1123之格式,例:"{0:r}"之結果為Mon, 01 Jan 1900 00:00:00 GMT。 s ISO 8601區域時間之格式,例:"{0:s}"之結果為1900-01-01T00:00:00。 t 簡短時間之格式,例:"{0:t}"之結果為上午 12:00。 T 完整時間之格式,例:"{0:T}"之結果為上午 12:00:00。 u ISO 8601全球時間之格式,例:"{0:u}"之結果為1900-01-01 00:00:00Z。 U 全球時間之格式,例:"{0:U}"之結果為1899年12月31日 下午 04:00:00。 Y 或 y 年月之格式,例:"{0:y}"之結果為1900年1月。
- 自訂數值格式的符號
格式符號 說明 0 在數字之前或小數點之後補0,例:75.48之"{0:00000.000}"結果為00075.480。 # 表示數字,通常搭配其他符號使用。 . 小數點,通常搭配其他符號使用。 , 一個逗點等於除1000,兩個逗點等於除1000000,例:100000000之"{0:0,,}"結果為100。 % 印出百分比符號,例:75.48之"{0:#%}"結果為7548%。 E+0,E-0,e+0 或 e-0 以科學符號表示,例:75.48之"{0:#.###e+0}"結果為7.548e+1。
格式:
- yyyy: 西元年四位
- MM: 月份
- dd: 日期
- t: AM/PM
- hh: 12小時制
- HH: 24小時制
- mm: 分鐘
- ss: 秒數
- f: 精確秒數1位
[ASP.NET][VB][C#] 日期格式速查表
ApplyFormatInEditMode 設成True
HtmlENcode 設成False
HtmlENcode 設成False
Gridview 欄位裡的DataformatString 依以下列表設定。ex:日期格式 2008/09/11 要設成 {0:yyyy/MM/dd}
- 數值資料格式符號
格式符號 說明 C 或 c 貨幣之格式,例:25000之"{0:c}"結果為NT$25,000.00。 D 或 d 十進位之格式,例:25000之"{0:d}"結果為25000。 E 或 e 科學符號之格式,例:25000之"{0:e}"結果為2.500000e+004。 F 或 f Fixed-point之格式,例:25000之"{0:f}"結果為25000.00。 G 或 g 一般之格式,例:25000之"{0:g}"結果為25000。 N 或 n 數字有逗點之格式,例:25000之"{0:n}"結果為25,000.00。 P 或 p 百分比之格式,例:25000之"{0:p}"結果為2,500,000.00%。 X 或 x 十六進位之格式,例:25000之"{0:x}"結果為61a8。
- 日期格式符號
格式符號 說明 d 簡短日期之格式,例:"{0:d}"之結果為1900/1/1。 D 完整日期之格式,例:"{0:D}"之結果為1900年1月1日。 f 完整日期簡短時間之格式,例:"{0:f}"之結果為1900年1月1日 上午 12:00。 F 完整日期時間之格式,例:"{0:F}"之結果為1900年1月1日 上午 12:00:00。 g 簡短日期簡短時間之格式,例:"{0:g}"之結果為1900/1/1 上午 12:00。 G 簡短日期完整時間之格式,例:"{0:G}"之結果為1900/1/1 上午 12:00:00。 M 或 m 月日之格式,例:"{0:m}"之結果為1月1日。 R 或 r RFC1123之格式,例:"{0:r}"之結果為Mon, 01 Jan 1900 00:00:00 GMT。 s ISO 8601區域時間之格式,例:"{0:s}"之結果為1900-01-01T00:00:00。 t 簡短時間之格式,例:"{0:t}"之結果為上午 12:00。 T 完整時間之格式,例:"{0:T}"之結果為上午 12:00:00。 u ISO 8601全球時間之格式,例:"{0:u}"之結果為1900-01-01 00:00:00Z。 U 全球時間之格式,例:"{0:U}"之結果為1899年12月31日 下午 04:00:00。 Y 或 y 年月之格式,例:"{0:y}"之結果為1900年1月。
- 自訂數值格式的符號
格式符號 說明 0 在數字之前或小數點之後補0,例:75.48之"{0:00000.000}"結果為00075.480。 # 表示數字,通常搭配其他符號使用。 . 小數點,通常搭配其他符號使用。 , 一個逗點等於除1000,兩個逗點等於除1000000,例:100000000之"{0:0,,}"結果為100。 % 印出百分比符號,例:75.48之"{0:#%}"結果為7548%。 E+0,E-0,e+0 或 e-0 以科學符號表示,例:75.48之"{0:#.###e+0}"結果為7.548e+1。
格式:
- yyyy: 西元年四位
- MM: 月份
- dd: 日期
- t: AM/PM
- hh: 12小時制
- HH: 24小時制
- mm: 分鐘
- ss: 秒數
- f: 精確秒數1位
IIS7 .NET4.0 新安裝問題,ISAPI及CGI限制
在預設下安裝好IIS7
是沒有開啟.NET4.0的存取的
開啟方法請到IIS7設定下
找到主機的首頁
IIS區塊中
ISAPI及CGI限制
把asp.net 4.0設定成允許即可
是沒有開啟.NET4.0的存取的
開啟方法請到IIS7設定下
找到主機的首頁
IIS區塊中
ISAPI及CGI限制
把asp.net 4.0設定成允許即可
MVC說明
M:Model 模型
V:View 檢視
C:Controller控制器
Model:
負責所有與資料有關的任務
定義型別或類別負責所有跟資料有相關的工作ADO.NET
View:
所使用者有關的介面如html輸入工作,傳回資訊
取得Controller 回傳資料,做處理格式及放置htm位置
操控 html 控制項
資料取得從Controller 的Action取得,分成兩種,弱型別、強型別
弱型別:從繼承中取得的物件屬OJBect 屬性
Action 傳遞資料有三種:ViewData、TempData、Model傳遞
Controller:
取得model資料
決定應該顯示哪個view
如果發生錯誤時,需選擇適當的view 進行回應
實作方法及介面,指派方法資料及利用方法傳遞資料及檢示給View
V:View 檢視
C:Controller控制器
Model:
負責所有與資料有關的任務
定義型別或類別負責所有跟資料有相關的工作ADO.NET
View:
所使用者有關的介面如html輸入工作,傳回資訊
取得Controller 回傳資料,做處理格式及放置htm位置
操控 html 控制項
資料取得從Controller 的Action取得,分成兩種,弱型別、強型別
弱型別:從繼承中取得的物件屬OJBect 屬性
Action 傳遞資料有三種:ViewData、TempData、Model傳遞
Controller:
取得model資料
決定應該顯示哪個view
如果發生錯誤時,需選擇適當的view 進行回應
實作方法及介面,指派方法資料及利用方法傳遞資料及檢示給View
2011年8月11日 星期四
SQL CASE 的用法
CASE WHEN
欄位= ?
THEN '變成什麼值'
Else '' <--when沒找到的話就空白
End 結尾
as <--搜尋到的資料另建一個匿名欄位
SELECT Order_id, Conten_H1, Conten_H2, Conten_H3, Conten_View, CASE WHEN Conten_View = 1 THEN 'V' ELSE '' END AS Conten_View_show FROM Jsl_Index_Conten ORDER BY Order_id DESC
欄位= ?
THEN '變成什麼值'
Else '' <--when沒找到的話就空白
End 結尾
as <--搜尋到的資料另建一個匿名欄位
SELECT Order_id, Conten_H1, Conten_H2, Conten_H3, Conten_View, CASE WHEN Conten_View = 1 THEN 'V' ELSE '' END AS Conten_View_show FROM Jsl_Index_Conten ORDER BY Order_id DESC
GridView、DatailsView、FormView 簡單說明
GridView
說明:提供表格格式,資料來源內容的表格視。每個資料行表示一個資料來源欄位,每個資料列表示一個資料記錄。可以使用樣版來自訂個別資料欄位,但是會被強制使用表格式表示的內容。可自訂項目的細微性是資料表諸存格。雖然使用一些辛苦的作業,可以變更資料表資料列之結構---例如,可以新增或移除儲存格。但是,很難可以再超過這些了。與其它檢視控制項似,在GridView也完全支援雙向資料繫結。
DatailsView
說明:設計用以表示單一紀錄得資料,則控制項會呈現出表格式具固定的版面配置。可以決定要呈現的欄位以及格式,可以使用樣版以自訂個別資料欄位的外觀,但不能變更整體表格基礎的版面配置。控制項支援就地編輯以及插入憘刪除,而具會向下至繫結的資料來源控制項之實際資料存取工作,只要基礎資料來源支援分頁和排序,控制項會讓這些功能透過自己的使用者介面來使用。
FormView
說明:
說明:提供表格格式,資料來源內容的表格視。每個資料行表示一個資料來源欄位,每個資料列表示一個資料記錄。可以使用樣版來自訂個別資料欄位,但是會被強制使用表格式表示的內容。可自訂項目的細微性是資料表諸存格。雖然使用一些辛苦的作業,可以變更資料表資料列之結構---例如,可以新增或移除儲存格。但是,很難可以再超過這些了。與其它檢視控制項似,在GridView也完全支援雙向資料繫結。
DatailsView
說明:設計用以表示單一紀錄得資料,則控制項會呈現出表格式具固定的版面配置。可以決定要呈現的欄位以及格式,可以使用樣版以自訂個別資料欄位的外觀,但不能變更整體表格基礎的版面配置。控制項支援就地編輯以及插入憘刪除,而具會向下至繫結的資料來源控制項之實際資料存取工作,只要基礎資料來源支援分頁和排序,控制項會讓這些功能透過自己的使用者介面來使用。
FormView
說明:
ListView 介紹
可以分頁、更新、插入及刪除、排序
ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate
樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。
EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。
EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。
GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。
GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值
InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。
ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。
ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。
LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。
SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。
ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法
另外觸發事件跟一般一樣有的功能
自訂按鈕:
Cancel
Delete
Edit
Insert
Page
Slect
Sort
Update
e.commandName取得按鈕名稱 會等於:Update,可以用if來判斷
整體來說:ListView是DataList加強版,透過繫結的資料來源重複,使用者定義的樣版
支援:資料雙向繫結、全完支援資料來源控制項
版面配置樣版定義資料項目周圍的標記,並提供開發人員有關於html標籤和css樣式,完全自由的控制,不提供任何樣式屬性,完完全全靠css樣式類別處理
ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate
樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。
EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。
EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。
GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。
GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值
InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。
ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。
ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。
LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。
SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。
ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法
另外觸發事件跟一般一樣有的功能
自訂按鈕:
Cancel
Delete
Edit
Insert
Page
Slect
Sort
Update
e.commandName取得按鈕名稱 會等於:Update,可以用if來判斷
整體來說:ListView是DataList加強版,透過繫結的資料來源重複,使用者定義的樣版
支援:資料雙向繫結、全完支援資料來源控制項
版面配置樣版定義資料項目周圍的標記,並提供開發人員有關於html標籤和css樣式,完全自由的控制,不提供任何樣式屬性,完完全全靠css樣式類別處理
ListView 介紹
可以分頁、更新、插入及刪除、排序
ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate
樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。
EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。
EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。
GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。
GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值
InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。
ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。
ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。
LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。
SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。
ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法
另外觸發事件跟一般一樣有的功能
ListView主要樣版 至少需要指定兩個才能編譯並使用ListView 不然會發生錯誤
必需要有樣版:LayoutTemplate和ItemTemplate
樣版介紹
AlternatingItemTemplate:表用示來呈現每○其它東結項目的板版,如果這個屬性未指定,所有項目是使用項目樣版來做一般的呈現。替代項目樣版通常包含與項目相同的控制項和內容,但不同的樣式以區分項目。
EditItemTemplate:表示用於編輯每個東局項目的板版,編輯樣版通常包含輸入控制項,用以更新東結資料記錄的值,編輯樣版也是應該包含按鈕來存,或捨棄變更。
EmptyDataTemplate:指示當資料來源東結至ListView控制項的空的時所呈現之樣版。當這種情況發生時,空白資料樣版會取代版面配置樣版而呈現,不過,請留意,如果InsertItemPosition未設定為 none,則 InsertItemTemplate會取得優先權。
GroupSeparatorTemplate:表示用來放置在ListView控制項中,每個群組之間自訂內容的樣版。
GroupTemplate:表示用於建立listView控制項,並排配置內容的樣版。在並排配置,一列中,項目水平重複數,是根據GroupItemCount屬性的值
InsertItemTemplate:指示用於插入新的資料項目的樣版。插入樣版包含輸入控制項,以收集資料來初始化新的資料記錄,插入樣版也應該包含按鈕來存,或捨棄變更。
ItemSeparatorTemplate:指示用於指定ListView控制項的項目之間分隔符號內容的樣版。
ItemTemplate:表示要使用來呈現控結至控制項的項目的樣版。
LayoutTemplate:表示呈現任何透過ListView控制項顯示的根目錄容器內容之樣版。這個樣版是必要的。
SelectdItemTemplate:表示用來呈現目前所選取的資料項目的樣版。
ListView 控制項是繼承:WebControl
少Auto樣式屬性設定,但他能輸方便被樣式化,套用css方法
另外觸發事件跟一般一樣有的功能
2011年8月10日 星期三
虛擬錯誤
微軟的asp.net網頁都會預設進行Request Validation,但若是想規避這樣的內建行為。(建議仍要有其他的方法來防範XSS攻擊)
通常我們可以在.aspx中的Page Tag設定:
<@Page Language="C#" validateRequest="False" >
或是直接對整個站台設定Web.Config中 下設定全域的
不過,假如你現在在ASP.NET 4.0 的環境下的話,就算進行上述的設定,可能仍會出現驗證失敗的訊息(潛在危險Request.QueryString的錯誤訊息)
因為ASP.NET4.0與2.0版本在請求驗證的定義上已經有所不同:
ASP.NET Request Validation
請求驗證是ASP.NET提供來保護XSS攻擊的一項功能
在先前的ASP.NET(ASP.NET 2.0)網頁,都是預設會進行網頁請求的請求驗證
僅會針對.aspx以及他們的class檔案進行驗證
不過到了ASP.NET 4.0,請求驗證範圍擴大到所有的請求
因為從BeginRequest階段就開始了HttpRequest
因此在這個期間任何的資源要求都會進行請求驗證
而非網頁檔案(.aspx)而已,還包含WebService呼叫以及自訂的http Handlers,都會去驗證http請求的內容
因此在ASP.NET 4.0下,可能在非網頁請求的情況下,仍會發生請求驗證錯誤的訊息
這時為了避免這樣的問題,一樣在Web.Config中 下加入下列語句
這樣就可以讓請求驗證只焦點在.aspx網頁上了。
其他關於ASP.NET 4.0 請求驗證的應用方法:Jimmy的部落格
<
httpRuntime
requestValidationType
=
"Validate.MyRequestValidator"
/>
問題:不是有效的虛擬路徑
Server.MapPath()获得的是虚拟web路径的本地物理路径
example: 你有一个website,位置再 C:\website Server.MapPath(".")返回的是 “C:\website”
你说,这个是虚拟路径嘛? website的虚拟路径应该是 http://localhost/website
example: 你有一个website,位置再 C:\website Server.MapPath(".")返回的是 “C:\website”
你说,这个是虚拟路径嘛? website的虚拟路径应该是 http://localhost/website
2011年8月9日 星期二
驗證身份證字號的正確性
public
string
IDChk(
string
vid)
{
List<
string
> FirstEng =
new
List<
string
> {
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"X"
,
"Y"
,
"W"
,
"Z"
,
"I"
,
"O"
};
string
aa = vid.ToUpper();
bool
chackFirstEnd =
false
;
if
(aa.Trim().Length == 10)
{
byte
firstNo = Convert.ToByte(aa.Trim().Substring(1, 1));
if
(firstNo > 2 || firstNo < 1)
{
return
"2"
;
}
else
{
int
x;
for
(x = 0; x < FirstEng.Count; x++)
{
if
(aa.Substring(0, 1) == FirstEng[x])
{
aa =
string
.Format(
"{0}{1}"
, x + 10, aa.Substring(1, 9));
chackFirstEnd =
true
;
break
;
}
}
if
(!chackFirstEnd)
return
"3"
;
int
i = 1;
int
ss =
int
.Parse(aa.Substring(0, 1));
while
(aa.Length > i)
{
ss = ss + (
int
.Parse(aa.Substring(i, 1)) * (10 - i));
i++;
}
aa = ss.ToString();
if
(vid.Substring(9, 1) ==
"0"
)
{
if
(aa.Substring(aa.Length - 1, 1) ==
"0"
)
{
return
"0"
;
}
else
{
return
"4"
;
}
}
else
{
if
(vid.Substring(9, 1) == (10 -
int
.Parse(aa.Substring(aa.Length - 1, 1))).ToString())
{
return
"0"
;
}
else
{
return
"4"
;
}
}
}
}
else
{
return
"1"
;
}
}
//回傳1 代表字數不到10
//回傳2代表第二碼非1,2
//回傳3 代表首碼有誤
//回傳4代表檢查碼不對
訂閱:
文章 (Atom)