顯示具有 程式設計 標籤的文章。 顯示所有文章
顯示具有 程式設計 標籤的文章。 顯示所有文章

2010年7月8日 星期四

ASP.NET MVC 教學 Part 2 – Using GridView

很多人學ASP.NET都以為它只要點兩下就好了(初學者一開始就是先對按鈕點兩下然後開始寫程式),其實ASP.NET算是蠻深的技術,只是微軟把控制項包裝得很好,讓開發人員可以無痛的寫程式(學到後面就很痛了)。但是在ASP.NET MVC中,是沒辦法直接使用控制項的,幸好透過一些方法,還是可以有辦法使用的。








本篇文章將會示範在MVC的專案中如何使用GridView,GridView算是一個很方便的控制項,可以快速的顯示資料,關於如何在MVC專案中使用控項制,可以先參考保哥寫的

ASP.NET MVC 開發心得分享 (3):與 WebForm 共舞。

 

照慣例,先開個MVC專案吧。

2010-07-08_133854

 

選擇不建立測試專案。

2010-07-08_134019

 

之後先新增一個Action。

2010-07-08_134423

 

之後替這個Action新增View。

2010-07-08_134528

2010-07-08_134546

 

然後新增一個Models,取名為PersonModel。

2010-07-08_134726

2010-07-08_134804

 

替PersonModel新增三個屬性。

2010-07-08_134845

 

之後再新增一個類別:PersonHandler,這個是用來回傳資料用的。

2010-07-08_134946

 

接下來要在剛剛新增的DataList.aspx上加入GirdView,在那之前要先加入<form id=”Form1” runat=”server”></form>這對標籤,才能將控制項加進去。

2010-07-08_135045

 

新增一個GridView。

2010-07-08_135409

 

接下來在設計模式下設定GridView的資料來源。

2010-07-08_135517

 

選擇物件。

2010-07-08_135543

2010-07-08_135618

2010-07-08_135633

 

執行結果。

2010-07-08_135755

 

除了用精靈去設定GirdView,也可以在程式碼裡面動態去設定,接下來在PersonHandler類別新增一個getPersonData2方法。

2010-07-08_135909

 

然後對著DataList.aspx點兩下(傳說中的點兩下),就會自動新增Page_Load,然後在裡面設定ObjectDataSource要執行哪一個方法。

2010-07-08_135957

 

執行結果。

2010-07-08_140036

2010年7月6日 星期二

ASP.NET MVC 教學 Part 1

前陣子Ruby on Rails流行時,就一直很希望微軟也能推出類似的技術。之後微軟也沒讓人失望,推出了MVC Framework,讓網頁程式設計師多了另一項選擇。而Visual Studio 2010推出後,MVC Framework也來到了2.0版。








本篇文章簡單介紹MVC Framework,之後的文章會再詳細介紹其它的功能。

首先新增一個MVC專案(請不要選到空白專案)。

2010-07-06_101549

 

系統會詢問是否要另外建立一個測試專案,因為本篇文章不會介紹到測試功能,所以選擇”否”。

2010-07-06_101621

 

專案建立好之後,打開HomeController.cs,新增一個Action,程式碼如下圖。

2010-07-06_103054

上面的程式碼只有單純的顯示頁面,所以只有一行return View()。

 

由於Action要有對應的View,所以這邊新增一個View。

2010-07-06_103257

 

這邊照預設值就好。

2010-07-06_103335

 

之後打開MvcTest.aspx,稍微修改一下頁面。

2010-07-06_105628

 

執行結果。

2010-07-06_105800

 

之後再稍做修改,在呼叫MvcTest這個Action時,讓使用者傳遞一個參數,程式碼如下。

2010-07-06_110832

在這裡,把id是直接塞進ViewData裡。

 

之後在View上面取得從Controller塞進去的資料。

2010-07-06_110848

 

執行結果。

2010-07-06_110901

 

或許讀者會好奇,參數為何一定要是id,不能改成其它的名稱,打開Global.asax.cs就能明白一切了。

2010-07-06_132320

在Action後面,接的參數就是設定為id。

 

我們把名稱改成int1,並加入另一個參數int2。

2010-07-06_132606

 

View這裡再稍做修改,這次是把兩個參數相加。

2010-07-06_133014

 

之後再修改Controller。

2010-07-06_133310

執行結果。

2010-07-06_133147

 

最後是重要的示範,也就是如何讓使用者上傳資料,在Controller裡再新增一個一樣的method:MvcTest,只是參數要多一個FormCollection的物件,並且在上面多加一行[AcceptVerbs(HttpVerbs.Post)]。

2010-07-06_134136

在前面已經有在View裡面加了一個TextBox,id也設定為Text1,之後在Controller裡面直接從form這個變數裡把TextBox的資料給找出來,並且塞進ViewData裡。

 

在View裡面把ViewData[“Msg”]印出來。

2010-07-06_135423

 

執行結果。

2010-07-06_135339

2010-07-06_135405

2010年6月11日 星期五

[野人獻曝] 使用rpxnow替你的網站作登入服務

本回要來示範如何使用 rpxnow 的服務,
讓你的網站可以使用Facebook、Twitter及Google等帳號作登入(茶)。

首先第一步,
你必須要到 rpxnow 使用你的 Google 等帳號登入後申請一個 app,
這樣你才可以繼續接下來的步驟。

以上步驟完成後,
你應該會得到一個 apiKey。
然後請到 Signin Setup,
取得嵌入你網站的Code。

這嵌入的Code有分兩種,
一種就是iframe式的,
另外一種就是blockUI式的,
基本上只跟外觀有關係,
你可以根據自己需求選擇。

取得那段HTML Code後,
請把他放在你要使其出現的地方上,
並且確定接收Token的程式沒有問題就可以作登入了。

==== 接下來比較重要 ====

上面比較簡單所以就大概帶過,
接下來要說明接收token的方法了。

示範程式碼以PHP實作,
如果要其他語言的,請自行想辦法。

好~這樣簡單的登入服務就完成了。
不過要注意一下,這種服務可能還是會有隱私權的問題,
所以如果網站成長到一定程度或許就要考慮直接套用各大網站的登入服務API,
而不應該使用這類服務。





2010年5月27日 星期四

使用YouTube API來尋找你要的影片

對於常常泡在網路上的人來說,看YouTube的時間可能比看電視還多,YouTube已經變成很多人生活的一部份。如果想寫跟YouTube有關的應用程式,YouTube也有提供API,它支援很多程式語言,當然.NET也有支援。









 

一開始先到下列兩個網址下載.NET版的SDK以及申請API Key。

http://code.google.com/apis/youtube/dashboard/

http://code.google.com/p/google-gdata/

 

安裝完SDK以及準備好API Key,就可以開始來寫程式,首先用VS 2008開一個Console專案。

2010-05-27_195324

 

之後加入這三個dll。

2010-05-27_200517

 

在程式碼中引用這三個命名空間。

2010-05-27_200828

 

在本範例中會用到三個類別,分別是YouTubeRequestSettings、YouTubeRequest以及YouTubeQuery。YouTubeRequestSettings簡單來說就是裝Application Name以及API Key這兩個資料,YouTubeRequest就是用來向YouTube要資料的,最後YouTubeQuery則是用來設定搜尋時會用到的參數。

2010-05-27_202516

 

使用上也相當的簡單,特別要注意到的是YouTubeQuery上的設定,其中OrderBy是設定搜尋結果的排序方式,有relevance、viewCount、published以及rating這四種,這邊設定為relevance,而NumberToRetrieve則是設定一次要取回幾筆結果。程式碼的最後一行則是先取出回傳結果的第一筆資料。

2010-05-27_204606

 

最後把搜尋結果的相關資料給列印出來。

2010-05-27_202537

 

執行結果。

2010-05-27_202619

2010年1月12日 星期二

Boost的array跟Static Assert

好久沒寫些新玩意了,打響2010第一砲吧。
這次是要介紹boost裡面一些簡單的玩意,array 跟Static Assert。兩者分別納入了C++ TR1跟C++ 0x,所以不用害怕學了之後以後用不到。

C語言的array一樣,相較於STL的vector來說,在runtime的時候執行速度較快,而缺點就是不能套用STL中一堆現成的Algorithm。因此就有個折衷之道,幫array加上一層wrapper,因此就成了Boost Array。

類似的程式碼長這樣,請詳閱boost/array.hpp內實做。

template<class T, size_t N>
class array {
T elems[N];
public:
// ignore
};







公開的function就是實做STL Container所需之必備條件,在此不直說了。這邊也提供一個使用array的簡單範例。



#include <boost/array.hpp>
#include <iostream>
int main()
{
typedef boost::array<int, 4> Array4;
Array4 s = {1, 2, 3, 4};
for (Array4::iterator p = s.begin(); p != s.end(); ++p)
std::cout << *p << std::endl;
}


至於Static Assert,是相對於C語言流傳已久的assert函數,在runtime的時候檢查判別式是否為真;而這邊的static就是在編譯的時候就能判斷出來。

至於實做方式,用到了Template Specialization。


關鍵在於



template <bool x> struct STATIC_ASSERTION_FAILURE;

template <> struct STATIC_ASSERTION_FAILURE<true> {
enum { value = 1 };
};


而STATIC_ASSERTION_FAILURE<false>的情況沒有定義,當需要用到時便會產生Compile Errror。



由於C++ 0x的static assert是內建語法,跟Boost的語法不同,這裡就不多介紹Boost的範例。不過觀念跟邏輯是相同的。

2009年12月27日 星期日

Plurk小圈圈管理程式

最近台灣很紅的Plurk,在前陣子終於發佈了第一版的API,所以我也趁著放假時間寫了一支小程式,這支程式是用來管理Plurk裡的小圈圈。有常在用Plurk小圈圈的網友,應該會覺得Plurk提供的介面實在是很難用,所以我就寫了這支程式,目前還算不上好用,之後希望可以修改的更直覺、好用。








下圖為整個程式的畫面,在登入的部份,除了帳號、密碼,還需要一個API Key,所以在使用之前必須到下列網址申請API Key。

http://www.plurk.com/API

2009-12-27_205532

 

將頁面拉到Get an API key這邊,就會想到申請API Key的欄位,填email並按下申請的按鈕,Plurk就會寄一組API Key到你所填的信箱,之後就可以開始使用本程式。

2009-12-27_204445 

 

在開啟程式之後,先填入帳號、密碼以及申請好的API Key。

2009-12-27_205625

 

登入成功後程式會顯示訊息。

2009-12-27_205646

之後按下”列出小圈圈”按鈕,就會列出目前的所有群組。

2009-12-27_205714

2009-12-27_205735

 

點選其中一個群組,就會列出群組內的所有好友。

2009-12-27_205846

 

如果要將某一位好友從群組中移除,只要對著帳號點兩下。

2009-12-27_205920

 

之後在”好友ID”那個欄示就會顯示剛點選的帳號,之後按下”將好友從群組中移除”按鈕,移除成功就會有訊息提示。

2009-12-27_210005 2009-12-27_210040

如果要將某個好友加入群組,目前是得自己手動輸入好友的帳號,之後時間充足的話會再修改。

 

再來是最後一個功能,就是發噗的功能,這個就不多作說明了。

2009-12-27_210204

 

程式下載

 

我們搬家了

新部落格在http://b-plurkers.com/