<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msdnvietnam.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>MSDNVIETNAM.NET | Microsoft Developer Network Vietnam</title><link>http://msdnvietnam.net/blogs/</link><description>Official web site for Microsoft developers in Vietnam</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Cấu hình Remote Desktop trên Windows Azure</title><link>http://msdnvietnam.net/blogs/duynb/archive/2011/02/25/c-u-h-236-nh-remote-desktop-tr-234-n-windows-azure.aspx</link><pubDate>Fri, 25 Feb 2011 10:42:39 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7362</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;(Bài viết này áp dụng với Windows Azure Tools 1.3 for Visual Studio 2010)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Hiện nay, Windows Azure cho phép sử dụng dịch vụ Remote Desktop để truy cập vào các roles chạy trên Windows Azure. Để cấu hình tính năng này, chúng ta sẽ sử dụng Visual Studio để cấu hình cho các project. Bài viết này sẽ hướng dẫn cho các bạn cách thức sử dụng Visual Studio đế cấu hình dịch vụ Remote Desktop với Windows Azure. &lt;/p&gt;  &lt;p&gt;Để có thể cấu hình dịch vụ Remote Desktop, chúng ta cần một project Windows Azure có ít nhất một role (web role hoặc worker role) trong project.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 1: &lt;/strong&gt;Publish project Windows Azure bằng cách tại cửa sổ Solution Explorer, chọn &lt;strong&gt;Publish &lt;/strong&gt;trên menu như hình sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_23B874A7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_4C170B21.png" width="583" height="289" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 2: &lt;/strong&gt;Tại cửa sổ Deploy Windows Azure project, chọn phương thức thực hiện là “&lt;strong&gt;Deploy your Windows Azure project to Windows Azure&lt;/strong&gt;” và tiếp tục cấu hình các thông số để có thể thực hiện deploy project lên Windows Azure.&lt;/p&gt;  &lt;p&gt;Tiếp theo, chọn vào mục &lt;strong&gt;Config Remote Desktop connection… &lt;/strong&gt;ở phía dưới&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_7C5DDFD7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_2F4D703F.png" width="454" height="428" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 3: &lt;/strong&gt;Trong cửa sổ &lt;strong&gt;Remote Desktop Configuration &lt;/strong&gt;chúng ta sẽ tiếp tục cấu hình các thông tin về tài khoản dùng để sử dụng dịch vụ Remote Desktop cũng như cấu hình certificate để chứng thực các thông tin tài khoản đó.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Tạo certificate cho thông tin về tài khoản: &lt;/em&gt;&lt;/strong&gt;Trong cửa số Remote Desktop Configuation, chọn &lt;strong&gt;Create &lt;/strong&gt;như hình bên dưới để tạo certificate mới cho tài khoản Remote Desktop&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_0C3CFECF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_2B4FF5E2.png" width="646" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Điền tên cho certificate và bấm &lt;strong&gt;OK.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_2528A947.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_15396483.png" width="379" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 4: &lt;/strong&gt;Tạo file certificate để upload lên Windows Azure&lt;/p&gt;  &lt;p&gt;Tại cửa sổ Remote Destop Configuration sau khi đã tạo thành công certificate, chọn vào &lt;strong&gt;View&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_5A71BBAC.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_5135806B.png" width="429" height="426" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Tại tab Details, chọn vào &lt;strong&gt;Copy to File…&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_6E5B2875.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_18E6E386.png" width="423" height="525" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Trong hộp thoại &lt;strong&gt;Certificate Export Wizard, &lt;/strong&gt;chọn vào mục &lt;strong&gt;Yes, export the private key&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_0C49109D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_3A06B395.png" width="517" height="470" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Tiếp tục cung cấp thông tin ở các bước tiếp theo và lưu file certificate.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 5: &lt;/strong&gt;Upload file certificate lên Windows Azure&lt;/p&gt;  &lt;p&gt;Tại trang quản lý Management Portal, chọn vào Hosted Services thích hợp và chọn &lt;strong&gt;Add Certificate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_127FC15E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_0575BB80.png" width="811" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chọn certificate và nhập password của certificate và chọn &lt;strong&gt;Create&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_2373C974.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_1B0FF41D.png" width="508" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;BƯỚC 6: &lt;/strong&gt;Quay trở lại cửa sổ Remote Desktop Configuration của Visual Studio và cung cấp các thông tin về tài khoản dùng Remote Desktop, sau đó chọn &lt;strong&gt;OK&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_4AEA95DE.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_36189D5E.png" width="429" height="426" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 7: &lt;/strong&gt;Tại cửa sổ Deploy Windows Azure project, chọn &lt;strong&gt;OK &lt;/strong&gt;để bắt đầu quá trình deploy project lên Windows Azure.&lt;/p&gt;  &lt;p&gt;Quá trình deploy Windows Azure project &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_7431B80F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_5265DF7E.png" width="945" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sau khi đã deploy thành công, chúng ta sẽ thấy dịch vụ Remote Desktop sẽ được mở tại Management Portal của Windows Azure như sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_4DA9596A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_3411A670.png" width="799" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tại đây, người dùng có thể thay đổi các thông tin về tài khoản Remote Desktop như thay đổi mật khẩu, thay đổi ngày hết hạn của tài khoản …&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SỬ DỤNG REMOTE DESKTOP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_131E33C9.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_4C549ABE.png" width="778" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_223B4263.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_38ADE0EA.png" width="448" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chú ý: Đôi khi user name phải sử dụng theo cấu trúc &lt;strong&gt;.\username&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7362" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Quản lý logins trên SQL Azure</title><link>http://msdnvietnam.net/blogs/duynb/archive/2011/02/25/qu-n-l-253-logins-tr-234-n-sql-azure.aspx</link><pubDate>Fri, 25 Feb 2011 02:26:59 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7361</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Bài viết này sẽ hướng dẫn các bạn quản lý các logins và phân quyền cho các user tương ứng với các logins cho từng database trên SQL Azure.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 1: &lt;/strong&gt;Kết nối đến &lt;strong&gt;master &lt;/strong&gt;database bằng tài khoản admin của SQL Azure. Việc kết nối đến &lt;strong&gt;master&lt;/strong&gt; database có thế thực hiện trên development portal hoặc thông qua SQL Management Studio 2008 R2.&lt;/p&gt;  &lt;p&gt;Khi đã kết nối đến &lt;strong&gt;master&lt;/strong&gt; database, chúng ta có thể sử dụng các command như CREATE LOGIN, ALTER LOGIN hoặc DROP LOGIN cho việc tạo, sửa hoặc xóa các logins cho SQL Azure.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 2: &lt;/strong&gt;Tạo login mới trên SQL Azure bằng command như sau:     &lt;br /&gt;&lt;em&gt;CREATE LOGIN ‘loginname’ WITH password=’&amp;lt;loginpassword&amp;gt;’&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Chú ý &lt;/em&gt;rằng &amp;lt;loginpassword&amp;gt; phải đáp ứng đầy đủ các chính sách về độ phức tạp của mật khẩu, các bạn có thể xem thêm các chính sách này ở tại đây &lt;a title="Strong Passwords" href="http://go.microsoft.com/fwlink/?LinkId=154152"&gt;Strong Passwords&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 3: &lt;/strong&gt;Khởi tạo database mới (bước này có thể bỏ qua). Việc tạo database mới có thể thực hiện với development portal của SQL Azure hoặc thông qua SQL Management Studio 2008 R2.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 4: &lt;/strong&gt;Kết nối đến database mới vừa được tạo (chú ý kết nối bằng tài khoản login được dùng để tạo ra database)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 5: &lt;/strong&gt;Khởi tạo tài khoản user trong database cho login trên như sau:     &lt;br /&gt;&lt;em&gt;CREATE USER username FROM LOGIN loginname      &lt;br /&gt;(Chú ý, &lt;/em&gt;ở vị trí &lt;em&gt;username &lt;/em&gt;và &lt;em&gt;loginname &lt;/em&gt;sẽ không có dấu ‘’ )&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BƯỚC 6: &lt;/strong&gt;Phân quyền cho user vừa tạo ở trên bằng cách gán cho user bằng role thích hợp     &lt;br /&gt;&lt;em&gt;EXEC sp_addrolemember ‘&amp;lt;role&amp;gt;’, ‘username’&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Đối với SQL Azure, các role ở mức database sẽ tương tự như đối với các role có sẵn trong SQL Server 2008 ( có thể xem thêm ở đây &lt;a title="http://msdn.microsoft.com/en-us/library/ms189121.aspx" href="http://msdn.microsoft.com/en-us/library/ms189121.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms189121.aspx&lt;/a&gt;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7361" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/SQL+Azure/default.aspx">SQL Azure</category></item><item><title>Imagine Cup Việt Nam 2011 đã khởi động tại trường Đại học CNTT</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/11/11/imagine-cup-vi-t-nam-2011-227-kh-i-ng-t-i-tr-ng-i-h-c-cntt.aspx</link><pubDate>Thu, 11 Nov 2010 07:04:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7237</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Vào sáng ngày 9/10/2010, Microsoft và CLB Sáng tạo CNTT - ITIClub tại trường ĐH CNTT đã tổ chức chương trình giới thiệu cuộc thi Imagine Cup 2011 Việt Nam đến với các bạn sinh viên trong trường. Buổi giới thiệu đã thu hút gần 200 sinh viên đến tham dự.&lt;/p&gt;  &lt;p&gt;Nội dung chương trình: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Giới thiệu về cuộc thi Imagine Cup 2011.      &lt;ul&gt;       &lt;li&gt;Nội dung: giới thiệu cuộc thi Imagine Cup 2011 – cuộc thi công nghệ hàng đầu thế giới dành cho sinh viên với các hạng mục tham dự phong phú. &lt;/li&gt;        &lt;li&gt;Người trình bày: Nguyễn Bảo Duy – Microsoft Student Partner Lead. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Chia sẻ kinh nghiệm tham gia Imagine Cup.      &lt;ul&gt;       &lt;li&gt;Nội dung: chia sẻ kinh nghiệm tham gia Software Design - Imagine Cup năm 2009 &lt;/li&gt;        &lt;li&gt;Người trình bày: Trần Thị Thanh Hương – Microsoft Student Partner. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Life runs on code:      &lt;ul&gt;       &lt;li&gt;Nội dung:          &lt;ul&gt;           &lt;li&gt;Giới thiệu về nền tảng phát triển ứng dụng Microsoft® .NET Framework 4.0. &lt;/li&gt;            &lt;li&gt;Tổng quan về lập trình hướng đối tượng với C#. &lt;/li&gt;            &lt;li&gt;Khai thác sức mạnh bộ công cụ phát triển ứng dụng trên Visual Studio 2010. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Người trình bày: Trần Xuân Chiến – Microsoft Student Partner. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Buổi giới thiệu đã nhận được sự hưởng ứng tích cực từ các bạn sinh viên, mở đầu cho chuỗi training công nghệ sắp tới được tổ chức tại trường.&lt;/p&gt;  &lt;p&gt;Một số hình ảnh tại buổi giới thiệu: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1329_5F00_5AE49902.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1329" border="0" alt="DSCF1329" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1329_5F00_thumb_5F00_4D5E3A62.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1337_5F00_4271334D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1337" border="0" alt="DSCF1337" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1337_5F00_thumb_5F00_50DC09A5.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7237" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/MSP/default.aspx">MSP</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>ASP.NET MVC 2 Training</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/11/07/asp-net-mvc-2-training.aspx</link><pubDate>Sun, 07 Nov 2010 03:14:09 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7226</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Vào sáng thứ 7, ngày 6 tháng 11 năm 2010 vừa qua, tại văn phòng Microsoft Vietnam, HCM đã diễn ra buổi training về ASP.NET MVC 2 dành cho các bạn Microsoft Student Partners trong địa bàn TP HCM.&lt;/p&gt;  &lt;p&gt;Nội dung được trình bày bởi bạn &lt;a href="https://tndhuy.wordpress.com/"&gt;Nguyễn Trần Đức Huy&lt;/a&gt; – Microsoft Student Partner đến từ trường đại học Khoa Tự Nhiên.&lt;/p&gt;  &lt;p&gt;Buổi training với nội dung xoay việc tìm hiểu về ASP.NET MVC 2 cũng như cách để xây dựng&amp;#160; một ứng dụng web CRUD nhanh chóng và hiệu quả bằng việc sử dụng ASP.NET MVC 2. Nội dung cụ thể như sau:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Tìm hiểu về ASP.NET MVC&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd381412.aspx"&gt;Tìm hiểu về mô hình MVC (Model – View – Controller)&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://www.asp.net/mvc/videos/understanding-models-views-and-controllers"&gt;Tìm hiểu về các thành phần Models, Views, Controllers trong ASP.NET MVC&lt;/a&gt; (Videos)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd381619.aspx"&gt;Sự khác nhau giữa ASP.NET Web Form và ASP.NET MVC&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Hướng dẫn xây dựng một ứng dụng web CRUD&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Hướng dẫn xây dựng ứng dụng web tại buổi training&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Phần 1 &lt;a title="http://bit.ly/9loBp1 " href="http://bit.ly/9loBp1%20"&gt;http://bit.ly/9loBp1 &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Phần 2 &lt;a title="http://bit.ly/9sL2vZ " href="http://bit.ly/9sL2vZ%20"&gt;http://bit.ly/9sL2vZ &lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Mã nguồn &lt;a title="http://bit.ly/cwL57H " href="http://bit.ly/cwL57H%20"&gt;http://bit.ly/cwL57H &lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Video hướng dẫn xây dựng các ứng dụng web bằng ASP.NET MVC 2&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.asp.net/mvc/videos/creating-a-movie-database-application-in-15-minutes-with-aspnet-mvc"&gt;Xây dựng ứng dụng Task List&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/mvc/samples/mvc-music-store"&gt;Xây dựng ứng dụng Music Store&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;Một số tài nguyên:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Slide trình bày tại training &lt;a title="http://bit.ly/dj34mE " href="http://bit.ly/dj34mE%20"&gt;http://bit.ly/dj34mE &lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7226" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/MSP/default.aspx">MSP</category></item><item><title>Imagine Cup Resource for MSPs</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/11/03/imagine-cup-resource-for-msps.aspx</link><pubDate>Wed, 03 Nov 2010 07:45:47 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7218</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;For Microsoft Student Partners in Vietnam, there are&amp;#160; some resources for you that can use in your Imagine Cup 2011 event&lt;/p&gt;  &lt;p&gt;1. Imagine Cup 2011 Banner: &lt;a href="http://msdnvietnam.net/media/p/7215.aspx"&gt;http://msdnvietnam.net/media/p/7215.aspx&lt;/a&gt; or &lt;a title="http://bit.ly/aWNa0z " href="http://bit.ly/aWNa0z%20"&gt;http://bit.ly/aWNa0z &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. Imagine Cup 2011 Brochure: &lt;a title="http://bit.ly/dwZFqh " href="http://bit.ly/dwZFqh%20"&gt;http://bit.ly/dwZFqh &lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7218" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/MSP/default.aspx">MSP</category></item><item><title>Cộng đồng phát triển ứng dụng cho Windows Phone 7</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/11/02/c-ng-ng-ph-225-t-tri-n-ng-d-ng-cho-windows-phone-7.aspx</link><pubDate>Mon, 01 Nov 2010 16:42:10 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7213</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Như mọi người cũng đã nghe rất nhiều thông tin về hệ điều hành mới nhất của Microsoft dành cho các thiết bị di động là Windows Phone 7. Windows Phone 7 không chỉ là một hệ điều hành mới nhất dành cho các thiết bị di động, mà Windows Phone 7 còn cung cấp một nền tảng cho các nhà phát triển xây dựng nên các ứng dụng chạy trên nền Windows Phone 7.&lt;/p&gt;  &lt;p&gt;Windows Phone 7 được xây dựng dựa trên nền tảng các công nghệ rất quen thuộc như &lt;a href="http://msdn.microsoft.com/en-us/library/w0x726c2.aspx" target="_blank"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb404700(VS.95).aspx" target="_blank"&gt;Silverlight&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb200104.aspx" target="_blank"&gt;XNA Game Studio 4&lt;/a&gt;. Các nhà phát triển ứng dụng sẽ rất quen thuộc với các kỹ năng đang có khi chuyển sang xây dựng các ứng dụng cho Windows Phone 7. Không dừng lại ở đó, công cụ phát triển ứng dụng cho WP7 cũng rất thân thuộc, đó là bộ công cụ phát triển ứng dụng chuyên nghiệp &lt;a href="http://www.microsoft.com/visualstudio/en-us/" target="_blank"&gt;Visual Studio 2010&lt;/a&gt;, &lt;a href="http://www.microsoft.com/expression/products/blend_overview.aspx" target="_blank"&gt;Expression Blend 4&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://spicialistsblog.wordpress.com/"&gt;Windows Phone Community&amp;#39;s Blog&lt;/a&gt; là một nơi rất đáng để ghé thăm, đây là một nơi chia sẽ rất nhiều nguồn tài nguyên bằng Tiếng Việt, các bài hướng dẫn chi tiết, các bài viết hay về Windows Phone 7.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://imaginecup.com/upload/Hero_Graphics/Windows7.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Và các bạn tin rằng ứng dụng do mình viết ra có thể làm thay đổi cả thế giới? Tại sao các bạn không mang sản phẩm của mình tham gia vào cuộc thi &lt;a href="http://imaginecup.com/" target="_blank"&gt;Imagine Cup 2011&lt;/a&gt; ở nội dung &lt;a href="http://imaginecup.com/competitions/windows-phone-7" target="_blank"&gt;Windows Phone 7&lt;/a&gt; để giành lấy những tấm vé đến thành phố New York, Hoa Kỳ để tham dự vòng chung kết? &lt;/p&gt;  &lt;p&gt;Hãy đăng ký ngay hôm nay tại &lt;a href="http://imaginecup.com/register"&gt;http://imaginecup.com/register&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7213" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category></item><item><title>Cập nhật thông tin mới nhất về chương trình đào tạo miễn phí ASP.NET MVC dành cho sinh viên tại Huế</title><link>http://msdnvietnam.net/blogs/mvpvn/archive/2010/10/26/c-p-nh-t-th-244-ng-tin-m-i-nh-t-v-ch-ng-tr-236-nh-224-o-t-o-mi-n-ph-237-asp-net-mvc-d-224-nh-cho-sinh-vi-234-n-t-i-hu.aspx</link><pubDate>Tue, 26 Oct 2010 04:22:54 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7201</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Vào ngày 24/10, tại Đại học Khoa học Huế đã diễn ra buổi học thứ 4 dành cho sinh viên về nền tảng công nghệ Web ASP.NET MVC, do anh Lê Hoàng Dũng trực tiếp giảng dạy, nội dung của buổi học xoáy sâu vào kiến trúc Model – View – Controller (MVC) nên gây không ít khó khăn cho sinh viên trong việc tiếp cận, tuy nhiên, các bạn đều hào hứng tham gia thảo luận để làm rõ nội dung và nắm bắt vấn đề tốt hơn.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nội dung của buổi học vừa qua:&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Model – View – Controller&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;What is Model – View – Controller&lt;/li&gt;      &lt;li&gt;MVC today&lt;/li&gt;      &lt;li&gt;ASP.NET MVC: New Kid on The Block&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Routes and URLS&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Introduce the Routing&lt;/li&gt;      &lt;li&gt;Routing vs URL Rewrite&lt;/li&gt;      &lt;li&gt;Advanced routing with custom constraints&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Controllers&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Defining the controller: IController interface&lt;/li&gt;      &lt;li&gt;The controller class and actions&lt;/li&gt;      &lt;li&gt;The ActionResult&lt;/li&gt;      &lt;li&gt;Action Invoker&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Views&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;What a view does?&lt;/li&gt;      &lt;li&gt;What a view should not do&lt;/li&gt;      &lt;li&gt;Strongly typed views&lt;/li&gt;      &lt;li&gt;ViewModels&lt;/li&gt;      &lt;li&gt;HTML Helper Methods&lt;/li&gt;      &lt;li&gt;The View Engine&lt;/li&gt;   &lt;/ul&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Một số hình ảnh của buổi học:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0967_5F00_1C7D4B86.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0967" border="0" alt="IMG_0967" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0967_5F00_thumb_5F00_4ED0F938.jpg" width="578" height="434" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0969_5F00_1F32DAAC.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0969" border="0" alt="IMG_0969" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0969_5F00_thumb_5F00_6BF6A142.jpg" width="583" height="438" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0976_5F00_71D144DB.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0976" border="0" alt="IMG_0976" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0976_5F00_thumb_5F00_37099C05.jpg" width="583" height="438" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0979_5F00_55E00FE3.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0979" border="0" alt="IMG_0979" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0979_5F00_thumb_5F00_05BAB1A5.jpg" width="583" height="440" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Anh Dũng chia sẻ là trong các buổi học kế tiếp sẽ tập trung vào việc hướng dẫn các bạn sinh viên là một Website với ASP.NET MVC, kết quả của 6 tuần học về web; nối tiếp là 04 tuần dành cho các bạn sinh viên tiếp cận với nền tảng Windows Presentation Foundation (WPF) để các bạn có thể học tập thêm và đào tạo về Silverlight để có thể tích hợp với ASP.NET MVC trong các tuần tháng 12 +1.&lt;/p&gt;  &lt;p&gt;Ngoài ra, anh Dũng cùng các anh em tại cộng đồng Geeksship đã có những đóng góp không nhỏ cho cộng đồng CNTT tại Việt Nam:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tài liệu tiếng Việt về Managed GDI+, do anh Dũng trực tiếp dịch: &lt;a href="http://geeksship.com/LocalTopic/b35e5165-44a6-4e89-aedd-9e17001f4888/vi-VN/Sach-gioi-thieu-GDI-plus-Dich-tu-MSDN.aspx"&gt;http://geeksship.com/LocalTopic/b35e5165-44a6-4e89-aedd-9e17001f4888/vi-VN/Sach-gioi-thieu-GDI-plus-Dich-tu-MSDN.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Screencast – Beginning with ASP.NET: &lt;a href="http://geeksship.com/LocalTopic/1ae66b3f-8705-4b74-bdeb-9e160145d893/vi-VN/Bat-dau-voi-ASPNET.aspx"&gt;http://geeksship.com/LocalTopic/1ae66b3f-8705-4b74-bdeb-9e160145d893/vi-VN/Bat-dau-voi-ASPNET.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;ASP.NET MVC Beta 3 example for beginners with Razors and TinyMCE &lt;a href="http://geeksship.com/LocalTopic/76f29843-8198-4a73-b8e6-9e17013afd7d/en-US/ASPNET-MVC-3-Beta-Example-for-Beginers-with-Razor-and-TinyMCE.aspx"&gt;http://geeksship.com/LocalTopic/76f29843-8198-4a73-b8e6-9e17013afd7d/en-US/ASPNET-MVC-3-Beta-Example-for-Beginers-with-Razor-and-TinyMCE.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Xin cám ơn anh Dũng cùng các anh em tại cộng đồng Geeksship đã có những đóng góp hết sức có giá trị cho cộng đồng CNTT tại Việt Nam.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;------------------------------------------------------&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Một số nguồn tài nguyên tham khảo thêm về lập trình ứng dụng Web:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What is Web Development &lt;a title="http://msdn.microsoft.com/en-us/ff728586.aspx" href="http://msdn.microsoft.com/en-us/ff728586.aspx"&gt;http://msdn.microsoft.com/en-us/ff728586.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Get started developing web applications &lt;a title="http://msdn.microsoft.com/en-us/ff728586.aspx" href="http://msdn.microsoft.com/en-us/ff728586.aspx"&gt;http://msdn.microsoft.com/en-us/ff728586.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;ASP.NET Web: Building you first ASP.NET Web Pages &lt;a title="http://msdn.microsoft.com/en-us/ff728588.aspx" href="http://msdn.microsoft.com/en-us/ff728588.aspx"&gt;http://msdn.microsoft.com/en-us/ff728588.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7201" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/Event/default.aspx">Event</category><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Chương trình training công nghệ mới Microsoft dành cho sinh viên</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/24/ch-ng-tr-236-nh-training-c-244-ng-ngh-m-i-microsoft-d-224-nh-cho-sinh-vi-234-n.aspx</link><pubDate>Sun, 24 Oct 2010 07:56:07 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7190</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Vào 2 ngày 23 và 24 vừa qua, Microsoft và CLB Live Science tại trường Đại học Khoa Tự Nhiên đã tổ chức chương trình training công nghệ mới Microsoft dành cho sinh viên. Chương trình đã thu hút hàng trăm sinh viên đến từ các trường đại học trong địa bàn TP HCM.&lt;/p&gt;  &lt;p&gt;Nội dung chương trình:&lt;/p&gt;  &lt;h3&gt;Ngày 1:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Tiếp cận nền tảng công nghệ .NET Framework 4.0 và bộ công cụ phát triển ứng dụng Visual Studio 2010&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;&lt;i&gt;Giới thiệu về nền tảng công nghệ .NET Frameword 4.0 mới nhất của Microsoft.            &lt;br /&gt;&lt;/i&gt;&lt;i&gt;Ngôn ngữ C# 4.0 cùng các tính năng mới, C# và lập trình hướng đối tượng.            &lt;br /&gt;&lt;/i&gt;&lt;i&gt;Khai thác bộ công cụ phát triển ứng dụng Visual Studio 2010 (coding, debugging, …)&lt;/i&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Trình bày:            &lt;br /&gt;Nguyễn Bảo Duy – &lt;a href="http://msdnvietnam.net/blogs/duynb/" target="_blank"&gt;Microsoft Student Partner Lead&lt;/a&gt;             &lt;br /&gt;&lt;a href="http://chienuit.wordpress.com/" target="_blank"&gt;Trần Xuân Chiến&lt;/a&gt; – Microsoft Student Partner Candidate at University of IT, HCMC VNU&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Tài nguyên:&lt;/em&gt;           &lt;ul&gt;           &lt;li&gt;&lt;em&gt;&lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/2010%5E_10%5E_StudentTraining%5E_NETFramework%5E_public.pdf" target="_blank"&gt;Slide deck&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=180977"&gt;NET Framework 4&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/sc65sadd.aspx"&gt;Debugging in Visual Studio&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Giới thiệu nền tảng công nghệ Web của Microsoft        &lt;br /&gt;Tiếp cận xây dựng ứng dụng Web trên ASP.NET MVC 2&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;&lt;i&gt;Giới thiệu về nền tảng các công nghệ Web của Microsoft.            &lt;br /&gt;&lt;/i&gt;&lt;i&gt;Tiếp cận với mô hình phát triển ứng dụng Web hiện đại MVC sử dụng thư viện ASP.NET MVC 2&lt;/i&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Trình bày:            &lt;br /&gt;Lê Dương Công Phúc – Microsoft Student Partner at Hoa Sen University             &lt;br /&gt;Lê Đức Nam – Microsoft Student Partner Candidate at Ton Duc Thang University&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Tài nguyên: &lt;/em&gt;          &lt;ul&gt;           &lt;li&gt;&lt;em&gt;&lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/2010%5E_10%5E_StudentTraining%5E_BuildingRichWebApp.pdf" target="_blank"&gt;Slide deck&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/ff380144.aspx" target="_blank"&gt;Microsoft Web Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/s57a598e.aspx" target="_blank"&gt;What&amp;#39;s new in ASP.NET 4 and Visual Web Developemnt&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd394709.aspx" target="_blank"&gt;ASP.NET MVC 2&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Ngày 2&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Tiếp cận phát triển nền tảng dữ liệu với Microsoft SQL Server 2008 R2&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;&lt;i&gt;Tìm hiểu tổng quan cơ bản về Microsoft SQL Server 2008 R2 bao gồm những tính năng mới, các dịch vụ phân tích, báo cáo mạnh mẽ được cung cấp sẵn, khả năng hỗ trợ các loại dữ liệu đặc biệt, …&lt;/i&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Trình bày:            &lt;br /&gt;&lt;a href="http://kyphong88.wordpress.com/" target="_blank"&gt;Lê Ngọc Kỳ Phong&lt;/a&gt; – Microsoft Student Partner at Ton Duc Thang University&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Tài nguyên&lt;/em&gt;           &lt;ul&gt;           &lt;li&gt;&lt;em&gt;&lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/SQLServer2008R2%5E_MSPSeminar%5E_Oct%5E_FY11.pdf" target="_blank"&gt;Slide deck&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;            &lt;li&gt;&lt;em&gt;&lt;a href="http://msdnvietnam.net/media/p/7191.aspx" target="_blank"&gt;Source code demo&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb500435.aspx" target="_blank"&gt;What&amp;#39;s new in SQL Server 2008 R2&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/xee70aty.aspx" target="_blank"&gt;Working with Database Projects&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Phát triển ứng dụng tương tác cao với bộ công cụ Microsoft Expression Studio 4&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;&lt;i&gt;Sử dụng bộ công cụ Microsoft Expression Studio 4 để xây dựng các ứng dụng mang tính tương tác với người dung cao – khả năng design hình ảnh, animation, layout, … cho các ứng dụng từ client đến các ứng dụng Silverlight&lt;/i&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Trình bày:            &lt;br /&gt;Trần Thị Thanh Hương – Microsoft Student Partners at University of IT, HCMC VNU&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;&lt;em&gt;Tài nguyên:&lt;/em&gt;           &lt;ul&gt;           &lt;li&gt;&lt;em&gt;&lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/2010%5E_10%5E_StudentTraining%5E_Expression%20Studio%204%20.pdf" target="_blank"&gt;Slide deck&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=99d67e3e-74ee-4a6c-99e7-492b30f3d2f2&amp;amp;" target="_blank"&gt;&lt;img src="http://msdnvietnam.net/cfs-filesystemfile.ashx/__key/CommunityServer.Components.SiteFiles/banners/msdn_5F00_fb_5F00_viet.gif" alt="" /&gt;&lt;/a&gt;     &lt;br /&gt;Đăng ký bản tin công nghệ MSDN Vietnam để nhận cập nhật thông tin công nghệ mới nhất hàng tháng.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Một số hình ảnh tại buổi training&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1216_5F00_52566D9E.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1216" border="0" alt="DSCF1216" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1216_5F00_thumb_5F00_30F6C802.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1220_5F00_172291D3.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1220" border="0" alt="DSCF1220" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1220_5F00_thumb_5F00_4D440A22.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1232_5F00_4C6BA438.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1232" border="0" alt="DSCF1232" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1232_5F00_thumb_5F00_2458F519.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1240_5F00_1F76415D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1240" border="0" alt="DSCF1240" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1240_5F00_thumb_5F00_4F50E31E.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1252_5F00_7F97B7D4.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1252" border="0" alt="DSCF1252" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1252_5F00_thumb_5F00_732994AB.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1256_5F00_6B31F249.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="DSCF1256" border="0" alt="DSCF1256" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/DSCF1256_5F00_thumb_5F00_5C1B136F.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7190" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/MSP/default.aspx">MSP</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/Training+lab/default.aspx">Training lab</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Windows Server 2008 R2 Training Workshop for MSP</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/22/windows-server-2008-r2-training-workshop-for-msp.aspx</link><pubDate>Thu, 21 Oct 2010 16:21:25 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7186</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Vào ngày 21 tháng 10, tại văn phòng Microsoft đã diễn ra buổi training tổng quan về Windows Server 2008 R2 dành cho các bạn Microsoft Student Partners đến từ các trường đại học. &lt;/p&gt;  &lt;p&gt;Tại buổi training, &lt;a href="http://hoangho.wordpress.com/"&gt;MVP Candidate Ho Nguyen&lt;/a&gt; đã giới thiệu các tính năng mới trong Windows Server 2008 R2 như&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Active Directory Domain Services" href="http://technet.microsoft.com/en-us/library/cc770946(WS.10).aspx"&gt;Active Directory Domain Services&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="Hyper-V" href="http://technet.microsoft.com/en-us/library/cc753637(WS.10).aspx"&gt;Hyper-V&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="DirectAccess" href="http://technet.microsoft.com/en-us/network/dd420463.aspx"&gt;DirectAccess&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;… &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cùng với Ho Nguyen, MSP Candidate Thuan Nguyen (từ Đại học Hoa Sen) cũng đã chia sẽ một số khái niệm về hệ thống khi làm việc với Windows Server 2008 R2&lt;/p&gt;  &lt;p&gt;Song song đó là các câu hỏi về khả năng mở rộng, tính ổn định, độ sẵn sàng, tính an toàn, … của hệ thống khi có các yêu cầu cập nhật, thay đổi … &lt;/p&gt;  &lt;p&gt;Một số hình ảnh tại buổi training&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0160_5F00_190BD909.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0160" border="0" alt="SP_A0160" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0160_5F00_thumb_5F00_67ACC8DB.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0163_5F00_5CBFC1C6.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0163" border="0" alt="SP_A0163" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0163_5F00_thumb_5F00_19F050C1.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0168_5F00_4186A71E.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0168" border="0" alt="SP_A0168" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0168_5F00_thumb_5F00_7E4B0323.jpg" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0154_5F00_0C59CC54.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0154" border="0" alt="SP_A0154" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0154_5F00_thumb_5F00_1E926D49.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0155_5F00_0B71409D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0155" border="0" alt="SP_A0155" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0155_5F00_thumb_5F00_23F0B820.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0158_5F00_3488B30E.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0158" border="0" alt="SP_A0158" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0158_5F00_thumb_5F00_7E46EF24.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0164_5F00_64068600.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0164" border="0" alt="SP_A0164" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0164_5F00_thumb_5F00_6432E368.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0165_5F00_36651AA3.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0165" border="0" alt="SP_A0165" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0165_5F00_thumb_5F00_67E0626B.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0167_5F00_5F7C8D14.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SP_A0167" border="0" alt="SP_A0167" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/SP_5F00_A0167_5F00_thumb_5F00_3112E19A.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Các bạn nào không tham dự được buổi training này có thể download slide deck tại đây &lt;a title="http://bit.ly/bjKBvO " href="http://bit.ly/bjKBvO%20"&gt;http://bit.ly/bjKBvO &lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7186" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/MSP/default.aspx">MSP</category></item><item><title>CheckedListBox với WPF</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/20/checkedlistbox-v-i-wpf.aspx</link><pubDate>Wed, 20 Oct 2010 15:37:49 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7177</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Có thể nói CheckedListBox là một trong những control thuộc họ ListBox khá phổ biến và được nhiều người sử dụng, nếu không sử dụng control CheckedListBox của Windows Form thì chúng ta phải xây dựng một custom control. &lt;/p&gt;  &lt;p&gt;Ngày nay, Windows Presentation Foundation được lựa chọn khá nhiều khi xây dựng các ứng dụng trên desktop. Và không may mắn là trên WPF lại không có control CheckedListBox. Tuy nhiên, WPF đã được trang bị một tính năng gọi là Template (PanelTemplate, ItemTemplate, DataTemplate, …), tính năng này là một trong những tính năng đã đem lại sức mạnh cho WPF trong việc customize các control một cách cực kỳ dễ dàng và nhanh chóng.&lt;/p&gt;  &lt;p&gt;Nếu như mọi người cần sử dụng CheckedListBox trong WPF, sau khi search một vòng qua các trang web mọi người sẽ dễ dàng tìm ra được một giải pháp để xây dựng CheckedListBox trong WPF như sau:&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6ebdd175-da83-41cf-a59e-14597cb3e14b" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;leftListBox&amp;quot;&lt;/span&gt;                  &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#ff0000;"&gt; IsSynchronizedWithCurrentItem&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#ff0000;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;6,28,6,6&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#ff0000;"&gt; SelectionMode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Multiple&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515;"&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;            &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CheckBox&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; IsChecked&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=IsSelected,&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=TwoWay}&amp;quot;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515;"&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Và sau khi thử qua, chắc chắn rằng kết quả sẽ gây thất vọng! Vì mặc dù đã checked vào checkbox nhưng thật sự thì các item trong listbox vẫn chưa được chọn!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_3347BFB9.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_3849FD68.png" width="408" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chúng ta có thể xem qua cấu trúc tổ chức để được các item là các CheckBox trong ListBox trên&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_36993194.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_0E868275.png" width="358" height="266" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chúng ta thấy rằng rõ ràng CheckBox không phải là children trực tiếp của ListBoxItem, đồng thời khi quy định thuộc tính binding cho CheckBox và không quy định rõ tìm đến element nào ở trong đoạn code trên nên kết quả không thu được như ý muốn.&lt;/p&gt;  &lt;p&gt;Để giải quyết vấn đề này, chúng ta cần quy định chi tiết hơn cho thuộc tính binding như sau&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3656235b-aeca-491d-8733-202aa734a76c" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;leftListBox&amp;quot;&lt;/span&gt;                  &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#ff0000;"&gt; IsSynchronizedWithCurrentItem&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#ff0000;"&gt; Grid.Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;6,28,6,6&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#ff0000;"&gt; SelectionMode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Multiple&amp;quot;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515;"&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;            &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;CheckBox&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;/li&gt; &lt;li&gt;                     &lt;span style="color:#ff0000;"&gt; IsChecked&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; Mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=TwoWay,&lt;/span&gt; &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                                         &lt;span style="color:#ff0000;"&gt; RelativeSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;={&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RelativeSource&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; FindAncestor&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; AncestorType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=ListBoxItem},&lt;/span&gt; &lt;/li&gt; &lt;li&gt;                                         &lt;span style="color:#ff0000;"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=IsSelected}&amp;quot;&lt;/span&gt; &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                     &lt;span style="color:#ff0000;"&gt; Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding}&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515;"&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#a31515;"&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;                        &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;Và kết quả thu được sẽ như ý muốn như sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_78BC9A17.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_0B911DC2.png" width="425" height="303" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7177" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Building batch approval ribbon in SharePoint 2010</title><link>http://msdnvietnam.net/blogs/quang/archive/2010/10/19/building-batch-approval-ribbon-in-sharepoint-2010.aspx</link><pubDate>Tue, 19 Oct 2010 03:33:53 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7166</guid><dc:creator>Nguyen Ba Quang</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In SharePoint 2010, We can delete multiple items but cannot with approve/reject items. So, how can user approve/reject multiple items in one time? For example TimeSheet application in SharePoint. We can create custom Ribbon then using Application page as dialog and SharePoint Server-Side object model to solve that problem. To complete your function, you have to resolve following things:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. How we pass the selected items and list to dialog page&lt;/strong&gt;? We use ECMAScript as following script in CommanAction funtion of the ribbon button&lt;/p&gt;  &lt;pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;// Shows custom dialog using SharePoint Client JS OM
function RibbonButtonHandler() {
    var ctx = SP.ClientContext.get_current();
    var items = SP.ListOperation.Selection.getSelectedItems(ctx);
    var myItems = &amp;#39;&amp;#39;;
    var k;

    for (k in items) {
        myItems += &amp;#39;|&amp;#39; + items[k].id;
    }
    var options = {       
        url: &amp;quot;/_layouts/BatchApprovalRibbon/UI/ApproveRejectPage.aspx?items=&amp;quot; + myItems + &amp;quot;&amp;amp;list=&amp;quot; + SP.ListOperation.Selection.getSelectedList(),
        width: 600,
        height: 400,
        dialogReturnValueCallback: demoCallback
    };

    SP.UI.ModalDialog.showModalDialog(options);
}&lt;/pre&gt;

&lt;p&gt;By passing selected items and list as text in url parameter, we can easy to get those in application page by Request.QueryString&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. In Application Page dialog, how can We approve/reject item programmatically?&lt;/strong&gt; We cannot use item[“Approval Status”] = “approved”, we must use following scripts instead.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;SPListItem item = currentList.GetItemById(Int32.Parse(id));               SPModerationInformation approvalStatus = item.ModerationInformation; approvalStatus.Status = status;                        
approvalStatus.Comment = comments;                        
item.Update();&lt;/pre&gt;

&lt;p&gt;with status is SPModerationStatusType.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. After approve/reject Items, how can we close dialog page and refresh parent page?&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;First we must close&amp;#160; the dialog page in server-side code:&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;protected void CloseDialogPage()
        {
            Context.Response.Write(&amp;quot;&amp;lt;script type=&amp;#39;text/javascript&amp;#39;&amp;gt;window.frameElement.commitPopup();&amp;lt;/script&amp;gt;&amp;quot;);
            Context.Response.Flush();
            Context.Response.End();
        }&lt;/pre&gt;

&lt;p&gt;Then we call SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK) in dialogReturnValueCallback function as following&lt;/p&gt;

&lt;pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;function demoCallback(dialogResult, returnValue) {
    SP.UI.Notify.addNotification(&amp;#39;Operation Successful!&amp;#39;);
    SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK);
}&lt;/pre&gt;

&lt;p&gt;Now You can use your ribbon to process batch approve/reject items.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/quang/clip_5F00_image002_5F00_669E6568.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/quang/clip_5F00_image002_5F00_thumb_5F00_4CCA2F39.jpg" width="244" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. But I think we should consider how to enable/disable your ribbon by condition or context.&lt;/strong&gt; To Enable/Disable ribbon button, we use EnabledScript attribute in CommandUIHandler element in you ribbon custom action &lt;/p&gt;

&lt;pre class="brush: xml; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;&amp;lt;CommandUIHandler
          Command=&amp;quot;Ribbon.Approval.Batch Approval.Button_CMD&amp;quot;
          EnabledScript=&amp;quot;BLOCKED SCRIPTEnableRibbonButton();&amp;quot;
          CommandAction=&amp;quot;BLOCKED SCRIPTRibbonButtonHandler();&amp;quot; /&amp;gt;  	&lt;/pre&gt;

&lt;p&gt;And in javascript funtion, in my scenario, we want to disable the button when there isn’t any items has selected and will enable for special list only. We use following script&lt;/p&gt;

&lt;pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;function EnableRibbonButton() {
    var items = SP.ListOperation.Selection.getSelectedItems();
    var ci = CountDictionary(items);   
    var listId = SP.ListOperation.Selection.getSelectedList();
    if (ci &amp;gt; 0 &amp;amp;&amp;amp; listId == &amp;#39;{A32BC151-5396-4377-AFB3-B769668C3A83}&amp;#39;) {
        return true;
    }
    return false;
}&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Finally: NOTE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Keep in mind that we pass url: &amp;quot;/_layouts/BatchApprovalRibbon/UI/ApproveRejectPage.aspx…. It mean dialog page will called under top level sie context. So SPContext.Current always return top level site. So if You use this ribbon in subsite, You should get error message “the list does not exist”. To resolve it, We can&lt;/p&gt;

&lt;p&gt;- change the url to: &lt;strong&gt;url: &amp;quot;/[your subsite]/_layouts/…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;- In Code behind, does not use SPContext.Current.Web directly, we must find the exactly the web of the list instead. We was use&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;SPSite site = SPContext.Current.Site;           
foreach (SPWeb web in site.AllWebs)           
{                
        currentList = SearchListById(web, listGuid);               
        .................            
}        &lt;/pre&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 2; toolbar: true;"&gt;SPList SearchListById(SPWeb web, Guid listId)
        {                        
            foreach (SPList list in web.Lists)
            {
                if (list.ID.Equals(listGuid))
                {
                    return list;
                }
            }
            return null;
        }&lt;/pre&gt;

&lt;p&gt;Hope this help!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7166" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/quang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://msdnvietnam.net/blogs/quang/archive/tags/ECMAScript/default.aspx">ECMAScript</category><category domain="http://msdnvietnam.net/blogs/quang/archive/tags/jQuery/default.aspx">jQuery</category></item><item><title>MICROSOFT TĂNG LỰC HỖ TRỢ CỘNG ĐỒNG LẬP TRÌNH VIÊN VỚI CỘNG ĐỒNG MSDN</title><link>http://msdnvietnam.net/blogs/mvpvn/archive/2010/10/18/microsoft-t-ng-l-c-h-tr-c-ng-ng-l-p-tr-204-nh-vi-202-n-v-i-c-ng-ng-msdn.aspx</link><pubDate>Mon, 18 Oct 2010 07:15:21 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7164</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Từ những ngày đầu phát triển đến nay, Microsoft không ngừng phát triển cộng đồng công nghệ, đặc biệt là cộng đồng lập trình viên phát triển ứng dụng trên nền tảng công nghệ Microsoft; nhằm mục tiêu hỗ trợ cộng đồng có thể tiếp cận với công nghệ mới một cách nhanh chóng và hiệu quả, Microsoft đã vận động sự đóng góp của các chuyên gia công nghệ trên toàn cầu cùng nhau chia sẻ kiến thức, kinh nghiệm về cho cộng đồng lập trình viên trên toàn thế giới.&lt;/p&gt;  &lt;p&gt;Dựa trên tinh thần chia sẻ kiến thức công nghệ cho cộng đồng toàn thế giới, Microsoft đã ra mắt cổng thông tin MSDN (được viết tắt từ Microsoft Developer Network) với địa chỉ &lt;a href="http://msdn.microsoft.com"&gt;http://msdn.microsoft.com&lt;/a&gt; , cổng thông tin là nguồn tài nguyên vô giá cho cộng đồng bao gồm thông tin, tài liệu về công nghệ trong tất cả các phiên bản sản phẩm của Microsoft, cấu trúc của trang MSDN gồm 6 phần chính:&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Library:&lt;/b&gt; Nguồn thư viện về các nội dung công nghệ của Microsoft từ xưa đến nay như .Net 2.0, .Net 3.0, .Net 3.5 và phiên bản .Net Framework mới nhất 4.0.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Learn:&lt;/b&gt; Nguồn học liệu cho cộng đồng lập trình viên trong việc tiếp cận căn bản và tìm hiểu chuyên sâu về từng mảng công nghệ như Cloud, Web, Desktop và Phone.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Downloads:&lt;/b&gt; Nguồn giới thiệu các sản phẩm, công cụ, tiện ích hỗ trợ cho việc lập trình viên xây dựng các ứng dụng nhanh chóng.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Support:&lt;/b&gt; Nơi hỗ trợ trực tuyến cho cộng đồng lập trình viên với các thủ thuật, kỹ thuật giải quyết và xử lí lỗi phát sinh.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Community:&lt;/b&gt; Nơi mà cộng đồng lập trình viên có thể kết nối đến với các chuyên gia công nghệ hàng đầu trên thế giới để có thể học hỏi và tích lũy kiến thức, kinh nghiệm.&lt;/p&gt;  &lt;p&gt;· &lt;b&gt;Forums:&lt;/b&gt; Diễn đàn thảo luận mở dành cho cộng đồng chuyên gia và các lập trình viên trên toàn thế giới.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/clip_5F00_image002_5F00_799B7C10.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/clip_5F00_image002_5F00_thumb_5F00_79F78938.jpg" width="244" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Không những thế, riêng tại Việt Nam, Microsoft đã cho ra mắt cổng thông tin MSDN Việt Nam (&lt;a href="http://msdnvietnam.net"&gt;http://msdnvietnam.net&lt;/a&gt; ) dành cho cộng đồng lập trình viên người Việt với mong muốn kết nối các chuyên gia công nghệ trong việc chia sẻ và hỗ trợ kiến thức công nghệ cho cộng đồng tại Việt Nam.&lt;/p&gt;  &lt;p&gt;Tuy nhiên, nguồn nội dung tại MSDN Việt Nam còn rất hạn chế và rất cần sự đóng góp chia sẻ của các chuyên gia và lập trình viên tại Việt Nam; để có thể hỗ trợ những người mới tiếp cận với công nghệ Microsoft có thể học tập và ứng dụng một cách nhanh chóng,hiệu quả.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/clip_5F00_image004_5F00_09B71E3D.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/clip_5F00_image004_5F00_thumb_5F00_641D7B0E.jpg" width="244" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ngoài ra, hàng tháng Microsoft tiến hành gửi bản tin công nghệ MSDN Flash Newsletter bằng Tiếng Việt cho cộng đồng tại Việt Nam, đây là bản tin miễn phí cập nhật những thông tin công nghệ mới nhất cùng các chương trình tập huấn, đào tạo của Microsoft trong tháng, các bạn có thể tiến hành đăng kí tại: &lt;a href="https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=99d67e3e-74ee-4a6c-99e7-492b30f3d2f2&amp;amp;lcid=1033"&gt;https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=99d67e3e-74ee-4a6c-99e7-492b30f3d2f2&amp;amp;lcid=1033&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7164" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/News/default.aspx">News</category></item><item><title>Convert int number to binary, octal, hex number with C#</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/14/convert-int-number-to-binary-octal-hex-number-with-c.aspx</link><pubDate>Thu, 14 Oct 2010 06:49:50 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7155</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I posted an article at my WordPress blog about using C# and .NET library to convert int number to binary, octal or hex number.&lt;/p&gt;  &lt;p&gt;It’s very simple and you can read fully post at &lt;a title="Permanent Link to Convert int to binary, octal, hex number very easily" href="http://nbaoduy.wordpress.com/2010/10/10/convert-int-to-binary-octal-hex-number-very-easily/"&gt;Permanent Link to Convert int to binary, octal, hex number very easily&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7155" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Chương trình đào tạo cho các đối tác, khách hàng về nền tảng SQL Server 2008 R2</title><link>http://msdnvietnam.net/blogs/mvpvn/archive/2010/10/13/ch-ng-tr-236-nh-224-o-t-o-cho-c-225-c-i-t-225-c-kh-225-ch-h-224-ng-v-n-n-t-ng-sql-server-2008-r2.aspx</link><pubDate>Wed, 13 Oct 2010 08:23:22 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7151</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Chương trình đào tạo về nền tảng SQL Server 2008 R2 được Microsoft tổ chức vào ngày 30/09 tại Hà Nội dành cho hơn 20 kỹ sư phần mềm, giúp nâng cao khả năng ứng dụng các năng lực mới có trong nền tảng SQL Server 2008 R2. &lt;/p&gt;  &lt;p&gt;Mục tiêu của&amp;#160; chương trình đào tạo nhằm giúp các đối&amp;#160; tác khách hàng tiếp cận với nền tảng SQL Server 2008 R2 trong việc quản trị và phát triển ứng dụng trên nền&amp;#160; tảng hệ quản trị cơ sở dữ liệu SQL Server 2008 R2 với nhiều tính năng mới.&lt;/p&gt;  &lt;p&gt;Nội dung của chương trình gồm 2 phần chính:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Nội dung lý thuyết giới thiệu về nền tảng SQL Server 2008 R2&lt;/li&gt;    &lt;li&gt;Nội dung thực hành hướng dẫn thao tác trực tiếp trên máy việc phát triển ứng dụng với các năng lực mới của SQL 2008 R2&lt;/li&gt; &lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7151" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/Event/default.aspx">Event</category><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Hội thảo phát triển ứng dụng trên nền tảng SharePoint 2010 với Visual Studio 2010 và SharePoint Designer 2010</title><link>http://msdnvietnam.net/blogs/mvpvn/archive/2010/10/13/h-i-th-o-ph-225-t-tri-n-ng-d-ng-tr-234-n-n-n-t-ng-sharepoint-2010-v-i-visual-studio-2010-v-224-sharepoint-designer-2010.aspx</link><pubDate>Wed, 13 Oct 2010 07:46:49 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7150</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Vào ngày 17 tháng 09, tại Hà Nội, Microsoft đã tổ chức hội thảo chuyên đề về “Phát triển ứng dụng trên nền tảng SharePoint 2010 với công cụ Visual Studio 2010 và SharePoint Designer 2010, với sự tham dự của hơn 70 kỹ sư phần mềm, trưởng nhóm phát triển ứng dụng của các tổ chức doanh nghiệp và tổ chức chính phủ.&lt;/p&gt;  &lt;p&gt;Nội dung hội thảo tập trung vào giới thiệu các tính năng mới có trong nền tảng SharePoint 2010 và khả năng phát triển ứng dụng với công cụ Visual Studio 2010 và SharePoint Designer 2010.&lt;/p&gt;  &lt;p&gt;Bài trình bày do anh Trịnh Minh Cường, công ty Microsoft Việt Nam trình bày cùng các kỹ sư thuộc các đối&amp;#160; tác và khách hàng của MIcrosoft về các vấn đề chính trong SharePoint 2010, bao gồm:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;What’s new in Microsoft SharePoint Server 2010&lt;/li&gt;    &lt;li&gt;Design and Plan an application in Microsoft SharePoint Server 2010&lt;/li&gt;    &lt;li&gt;Visual WebPart in SharePoint 2010&lt;/li&gt;    &lt;li&gt;Consuming Windows Communication Foundation (WCF) Services&lt;/li&gt;    &lt;li&gt;Server – Side Object Model&lt;/li&gt;    &lt;li&gt;Client – Side Object Model&lt;/li&gt;    &lt;li&gt;Silverlight Integration&lt;/li&gt;    &lt;li&gt;Customize Page using CSS and JavaScript&lt;/li&gt;    &lt;li&gt;Business Connectivity Service&lt;/li&gt;    &lt;li&gt;Workflow in Office SharePoint 2010&lt;/li&gt; &lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7150" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/Event/default.aspx">Event</category><category domain="http://msdnvietnam.net/blogs/mvpvn/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Dynamic Programming với C# 4.0 (Phần 2)</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/03/dynamic-programming-v-i-c-4-0-ph-n-2.aspx</link><pubDate>Sun, 03 Oct 2010 07:01:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7112</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;h6&gt;&lt;a href="http://msdnvietnam.net/blogs/duynb/archive/2010/09/25/dynamic-programming-v-i-c-4-0-part-1.aspx"&gt;Dynamic Programming với C# 4.0 (Part 1)&lt;/a&gt;&lt;/h6&gt;  &lt;p&gt;Trong phần 2 này, tôi sẽ tiếp tục giới thiệu về việc dynamic programming trong C# 4.0 thông qua việc sử dụng các đối tượng đặc biệt như DynamicObject, ExpandoObject.&lt;/p&gt;  &lt;p&gt;Như tôi đã trình bày ở phần 1, khi sử dụng keyword &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt; trong C# thì tất cả các truy cập properties hoặc gọi các methods sẽ được DLR (Dynamic Language Runtime) tự động quản lý việc truy cập vào các properties hoặc thực thi các methods được gọi. Nếu trong quá trình thực hiện, nếu DLR không tìm thấy các properties hoặc methods cần thiết thì DLR sẽ sinh ra các exception. Tuy nhiên, chúng ta hoàn toàn có khả năng can thiệp vào quá trình này, thay vì để DLR tự động thực hiện các công việc này, chúng ta sẽ thực hiện việc quyết định những việc gì sẽ làm đối với các truy cập properties hoặc thực thi methods của các object được sử dụng với keyword &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;h2&gt;Làm việc với DynamicObject&lt;/h2&gt;  &lt;p&gt;DynamicObject là một class đặc biệt trong namespace System.Dynamic. Để có thể sử dụng được class DynamicObject, chúng ta không thể tạo ra các đối tượng trực tiếp từ class này mà bắt buộc chúng phải định nghĩa một class khác thừa kế từ class DynamicObject.&lt;/p&gt;  &lt;p&gt;Class DynamicObject cho phép chúng ta định nghĩa các thao tác trên một đối tượng được khai báo với keyword dynamic và các thao tác đó sẽ được thực thi như thế nào. Cụ thể ở đây là chúng ta sẽ không để DLR tự động thực hiện công việc tìm và thực thi một cách tự động các thao tác mà chúng ta sẽ quy định các thao tác gì sẽ xảy ra nếu có truy cập vào các proterties, thực thi methods hoặc gọi các toán tử, v.v…&lt;/p&gt;  &lt;p&gt;Để có thể sử dụng khả năng này, trong C# chúng ta bắt buộc phải sử dụng keyword &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt; đối với các đối tượng của class DynamicObject.&lt;/p&gt;  &lt;p&gt;Bởi vì class DynamicObject không cho phép chúng ta hiện thực các đối tượng trực tiếp, do đó chúng ta bắt buộc phải thực hiện việc định nghĩa một class được thừa kế từ DynamicObject và override các phương thức cần thiết.&lt;/p&gt;  &lt;p&gt;Note: &lt;em&gt;Khi định nghĩa một class thừa kế từ DynamicObject, chúng ta vẫn thực hiện các thao tác như việc định nghĩa một class thông thường, có nghĩa là việc định nghĩa các properties, các phương thức là hoàn toàn hợp lệ. Chỉ khác ở một điểm là khi chúng ta truy cập vào các proterties hoặc gọi các methods thì đầu CLR sẽ thực hiện tìm thành phần phù hợp, nếu không tìm thấy thì lúc này DLR mới gọi đến các phương thức mà chúng ta đã override để thực hiện các thao tác mà chúng ta quy định.&lt;/em&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:34d3fa50-4039-4841-9f17-c611c43d7765" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DynamicObject&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IDynamicMetaObjectProvider&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; DynamicObject();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt; GetDynamicMemberNames();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DynamicMetaObject&lt;/span&gt; GetMetaObject(&lt;span style="color:#2b91af;"&gt;Expression&lt;/span&gt; parameter);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryBinaryOperation(&lt;span style="color:#2b91af;"&gt;BinaryOperationBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; arg, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryConvert(&lt;span style="color:#2b91af;"&gt;ConvertBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryCreateInstance(&lt;span style="color:#2b91af;"&gt;CreateInstanceBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] args, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryDeleteIndex(&lt;span style="color:#2b91af;"&gt;DeleteIndexBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] indexes);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryDeleteMember(&lt;span style="color:#2b91af;"&gt;DeleteMemberBinder&lt;/span&gt; binder);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryGetIndex(&lt;span style="color:#2b91af;"&gt;GetIndexBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] indexes, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryGetMember(&lt;span style="color:#2b91af;"&gt;GetMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryInvoke(&lt;span style="color:#2b91af;"&gt;InvokeBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] args, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryInvokeMember(&lt;span style="color:#2b91af;"&gt;InvokeMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] args, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TrySetIndex(&lt;span style="color:#2b91af;"&gt;SetIndexBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] indexes, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; value);&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TrySetMember(&lt;span style="color:#2b91af;"&gt;SetMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; value);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryUnaryOperation(&lt;span style="color:#2b91af;"&gt;UnaryOperationBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result);&lt;/li&gt; &lt;li&gt;    &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ở đây tôi sẽ giới thiệu qua chức năng của một số phương thức nổi bật&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;TryBinaryOperation&lt;/strong&gt;: Phương thức này cho phép chúng ta quy định các thao tác liên quan đến các toán tử như +, –, *, /, … &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;TryConvert&lt;/strong&gt;: Phương thức này cho phép chúng ta quy định các thao tác liên quan đến việc chuyển đổi kiểu dữ liệu. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;TryGetMember&lt;/strong&gt; và &lt;strong&gt;TrySetMember&lt;/strong&gt;: Các phương thức này cho phép chúng ta quy định các thao tác liên quan đến việc truy cập (bao gồm cả việc get và set) các properties của đối tượng. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;TryInvokeMember&lt;/strong&gt;: Các phương thức này cho phép chúng ta quy định các thao tác liên quan đến việc gọi, thực thi các methods. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Tôi sẽ minh hoạt các phương thức trên sẽ làm việc như thế nào thông qua một ví dụ rất đơn giản như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:aa60493d-8536-4498-abc9-6efb5d77ffc4" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DemoDynamic&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;DynamicObject&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryBinaryOperation(&lt;span style="color:#2b91af;"&gt;BinaryOperationBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; arg, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;You have called &amp;quot;&lt;/span&gt; + binder.Operation.ToString() + &lt;span style="color:#a31515;"&gt;&amp;quot; operator.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        result = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryConvert(&lt;span style="color:#2b91af;"&gt;ConvertBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result)&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;You have convert from DemoDynamic to &amp;quot;&lt;/span&gt; + binder.ReturnType.ToString());&lt;/li&gt; &lt;li&gt;        result = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryGetMember(&lt;span style="color:#2b91af;"&gt;GetMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;You have tried to get &amp;quot;&lt;/span&gt; + binder.Name + &lt;span style="color:#a31515;"&gt;&amp;quot; member.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        result = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TrySetMember(&lt;span style="color:#2b91af;"&gt;SetMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; value)&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;You have tried to set &amp;quot;&lt;/span&gt; + binder.Name + &lt;span style="color:#a31515;"&gt;&amp;quot; member.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;            &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; TryInvokeMember(&lt;span style="color:#2b91af;"&gt;InvokeMemberBinder&lt;/span&gt; binder, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] args, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; result)&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;You have tried to invoke &amp;quot;&lt;/span&gt; + binder.Name + &lt;span style="color:#a31515;"&gt;&amp;quot; member.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li&gt;        result = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ở đây, tôi chỉ đơn giản là sẽ xuất ra màn hình console những thao tác mà tôi tác động lên object.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2c69e284-cdcb-4370-857e-866be2b31c6e" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;dynamic&lt;/span&gt; demoDyn = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DemoDynamic&lt;/span&gt;();    &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; str = (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;)demoDyn; &lt;span style="color:#008000;"&gt;// Type conversation&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;demoDyn.Age = 21; &lt;span style="color:#008000;"&gt;// Set member&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; age = demoDyn.Age; &lt;span style="color:#008000;"&gt;// Get member            &lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;demoDyn.Sing(); &lt;span style="color:#008000;"&gt;// Invoke member;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;demoDyn += 5; &lt;span style="color:#008000;"&gt;// Operator&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Và kết quả tôi nhận được khi thực hiện các thao trên đối với object demoDyn như sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_6672A207.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_70C3C667.png" width="547" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7112" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Dynamic Programming với C# 4.0 (Part 1)</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/10/01/dynamic-programming-v-i-c-4-0-part-1.aspx</link><pubDate>Fri, 01 Oct 2010 07:02:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7083</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Một trong những tính năng mới nổi bật nhất trong .NET Framework 4.0 là hỗ trợ khả năng dynamic programming trong C# 4.0. &lt;/p&gt;  &lt;p&gt;Ngôn ngữ lập trình là một ngôn ngữ thuần hướng đối tượng ngay từ những phiên bản đầu tiên 1.0, 2.0. Đến phiên bản 3.0, ngôn ngữ lập trình C# được bổ sung các tính năng của một ngôn ngữ lập trình hướng thủ tục (functional programming). Tiếp tục phát triển ở phiên bản 4.0, ngôn ngữ lập trình C# được bổ sung các tính năng mạnh mẽ của một ngôn ngữ lập trình dynamic (dynamic programming).&lt;/p&gt;  &lt;h1&gt;Sử dụng kiểu &lt;em&gt;dynamic&lt;/em&gt;&lt;/h1&gt;  &lt;p&gt;Để sử dụng kiểu dynamic trong C# 4.0, chúng ta có thể sử dụng keyword &lt;em&gt;&lt;strong&gt;dynamic&lt;/strong&gt;&lt;/em&gt;. Giả sử tôi có một class ví dụ sau:&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6a400371-a510-439b-b2ef-b354755a11ae" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Aircraft&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AircraftName { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Fly()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;The aircraft &amp;quot;&lt;/span&gt; + AircraftName + &lt;span style="color:#a31515;"&gt;&amp;quot; is flying.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Đây là một class Aircraft được định nghĩa bao gồm AircraftName property và Fly() method. Tôi sẽ tiến hành sử dụng class này với nhiều cách khác nhau như sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_7EF418A5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_43C03CDA.png" width="518" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Với cách sử dụng thông thường như trên, nếu chúng ta cố gắng truy cập các properties hoặc gọi các phương thức không tồn tại trong định nghĩa class. Đây là bản chất của ngôn ngữ C# vốn là một statically typed language, tất cả mọi truy cập properties hoặc methods đều được kiểm tra tại compile time.&lt;/p&gt;  &lt;p&gt;Và nếu tôi sử dụng keyword &lt;strong&gt;&lt;em&gt;var&lt;/em&gt;&lt;/strong&gt; – một tính năng trong C# 3.0 thì kết quả sẽ như thế nào?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_6E2C6DF7.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_74734485.png" width="385" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Và kết quả là chúng ta vẫn nhận được các compile error tương tự như trên. Ở đây, việc sử dụng &lt;strong&gt;&lt;em&gt;var &lt;/em&gt;&lt;/strong&gt;chỉ là một hình thức rút gọn của cách sử dụng ở trên.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_33D0F816.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_5A32DB61.png" width="469" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tuy nhiên, khi sử dụng&lt;strong&gt;&lt;em&gt; dynamic&lt;/em&gt;&lt;/strong&gt; thì chúng ta sẽ không còn nhận được các lỗi compile errors như ở trên. Như vậy, đối với các kiểu dynamic, compiler sẽ bỏ qua việc kiểm tra tính hợp lệ của các truy cập properties hoặc methods tại thời điểm compile time. Tất cả các truy cập này sẽ được resolve tại thời điểm run-time.&lt;/p&gt;  &lt;p&gt;Đó là sự khác biệt đầu tiên của việc sử dụng &lt;strong&gt;&lt;em&gt;dynamic &lt;/em&gt;&lt;/strong&gt;là khi sử dụng, compiler sẽ bỏ qua việc kiểm tra tính hợp lệ trong các truy vập properties hoặc methods. Nếu như không sử dụng dynamic, thì chắc chắn rằng nếu các truy cập vi phạm tính hợp lệ thì chương trình sẽ không được compile thành công, trong khi nếu sử dụng dynamic thì cho dù chúng ta có thực hiên các truy cập vi phạm tính hợp lệ, chương trình vẫn được compile thành công.&lt;/p&gt;  &lt;p&gt;Khi sử dụng &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt;, tất cả các truy cập properties hoặc methods đều sẽ được resolve tại run-time. Nếu như các truy cập của chúng ta vi phạm tính hợp lệ thì chương trình của chúng ta vẫn sẽ nhận các lỗi thông báo về các vi phạm đó. Cụ thể trong ví dụ trên, khi truy cập vào property Color hoặc gọi method TakeOff() đều vi phạm bởi vì chúng vẫn chưa được định nghĩa. Mặc dù chương trình trên vẫn được compile thành công, nhưng khi chạy chương trình thì chúng ta sẽ nhận lỗi như sau&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_19908EF2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_03C6A695.png" width="460" height="246" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Một điểm khác biệt nữa giữa việc sử dụng &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt; và &lt;strong&gt;&lt;em&gt;var&lt;/em&gt;&lt;/strong&gt; như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:041b3386-55ae-4764-b7b8-4684a10d7dea" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; stObj = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Aircraft&lt;/span&gt;();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#008000;"&gt;// After this declaration, stObj&amp;#39;s type is Aircraft&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#008000;"&gt;// and you cannot change its type&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;stObj = 14; &lt;span style="color:#008000;"&gt;// cause compile-time error&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#0000ff;"&gt;dynamic&lt;/span&gt; dynObj = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Aircraft&lt;/span&gt;();&lt;/li&gt; &lt;li&gt;&lt;span style="color:#008000;"&gt;// After this declaration, dynObj&amp;#39;s type is Aircraft&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Type of dynObj is &amp;quot;&lt;/span&gt; + dynObj.GetType());&lt;/li&gt; &lt;li&gt;dynObj = 13;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&lt;span style="color:#008000;"&gt;// But after this, dynObj&amp;#39;s type is System.Int32&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;Type of dynObj is &amp;quot;&lt;/span&gt; + dynObj.GetType());&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Và nếu tôi chạy đoạn chương trình trên thì kết quả của tôi rõ ràng là tôi có thể dễ dàng thay đổi type của các đối tượng dynamic&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_30DB9363.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_36B636FC.png" width="519" height="151" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Vậy một câu hỏi sẽ được đặt ra là &lt;strong&gt;Khi sử dụng dynamic thì tôi được lợi ích gì? Tôi sẽ được lợi gì khi mà tất cả mọi vi phạm của tôi đều được bỏ qua tại thời điểm compile-time và cuối cùng rằng chương trình cũng vẫn bị lỗi?&lt;/strong&gt;&lt;/p&gt;  &lt;h1&gt;Một số scenario sử dụng dynamic&lt;/h1&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;1. Sử dụng với Anonymous type&lt;/h3&gt;  &lt;p&gt;Anonymous types là một tính năng đã có mặt trong C# từ phiên bản 3.0, tính năng này cho phép chúng ta khai báo và sử dụng ngay lập tức một kiểu dữ liệu mà không cần có tên của kiểu dữ liệu cũng như phải định nghĩa một cách bài bản cho kiểu dữ liệu đó.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:88949e9b-42a2-4469-a919-20f35bf987cf" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; customer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; { FirsName = &lt;span style="color:#a31515;"&gt;&amp;quot;Duy&amp;quot;&lt;/span&gt;, &lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                     LastName = &lt;span style="color:#a31515;"&gt;&amp;quot;Nguyen&amp;quot;&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;                     Email = &lt;span style="color:#a31515;"&gt;&amp;quot;nbaoduy@live.com&amp;quot;}&lt;/span&gt;;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ở đây, tôi có một object được khai báo bằng cách sử dụng anonymous type. Và trong chương trình của tôi, tôi cũng sử dụng nhiều anonymous type khác nữa và hầu như các anonymous type của tôi đều sẽ có một property là Email.&lt;/p&gt;  &lt;p&gt;Vậy bây giờ làm sao có thể viết một method để in property Email ra console khi mà tôi không hề biết tên của kiểu dữ liệu khi sử dụng anonymouse type?&lt;/p&gt;  &lt;p&gt;Ở đây, giải pháp đầu tiên là sử dụng một kỹ thuật có tên là reflection.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1c35e31b-21c2-4ceb-99c2-9f4dccf376c7" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; PrintEmail(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; obj)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(obj.GetType()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;                         .GetProperty(&lt;span style="color:#a31515;"&gt;&amp;quot;Email&amp;quot;&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;                         .GetValue(obj, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;));&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Với việc sử dụng kỹ thuật reflection như ví dụ trên, chúng ta sẽ thấy rằng sẽ mức độ thực hiện là rất phức tạp và khả năng xảy ra sai sót sẽ rất cao.&lt;/p&gt;  &lt;p&gt;Tuy nhiên, để đơn giản đi, chúng ta sẽ sử dụng &lt;strong&gt;&lt;em&gt;dynamic&lt;/em&gt;&lt;/strong&gt; như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3ed8e008-725e-4b00-8e25-d219fdd595e4" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; PrintEmail(&lt;span style="color:#0000ff;"&gt;dynamic&lt;/span&gt; obj)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(obj.Email);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Method PrintEmail của chúng ta bây giờ đã thay đổi là chúng ta đưa vào 1 object có kiểu là dynamic. Khi đó, trong thân của method, chúng ta sẽ truy cập đến property Email một cách dễ dàng mà không mắc phải lỗi kiểm tra của compiler.&lt;/p&gt;  &lt;h3&gt;2. Thực hiện cùng một công việc trên nhiều kiểu dữ liệu khác nhau&amp;#160; &lt;br /&gt;(Thanks Buu Nguyen for this scenario)&lt;/h3&gt;  &lt;p&gt;Trong class Aircraft được tôi định nghĩa ở trên có một method là Fly(). Giả sử rằng bây giờ trong chương trình của tôi lại có một class Bird như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0e8a12d3-f40f-48e1-abf5-aacb92c918f1" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Bird&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; BirdName { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Fly()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    {&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;&amp;quot;The bird &amp;quot;&lt;/span&gt; + BirdName + &lt;span style="color:#a31515;"&gt;&amp;quot; is flying.&amp;quot;&lt;/span&gt;);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Trong trường hợp này, tôi muốn rằng tôi có thể viết một method duy nhất để gọi method Fly() trong cả 2 class Aircraft và Bird, hoặc tổng quát hơn nữa là có thể gọi được tất cả những class nào có định nghĩa phương thức Fly().&lt;/p&gt;  &lt;p&gt;Trước đây, có rất nhiều giải pháp để giải quyết vấn đề này, tuy nhiên các giải pháp này đều khá phức tạp và tốn rất nhiều thời gian và công sức nhưng kết quả đôi khi lại không như mong muốn. &lt;/p&gt;  &lt;p&gt;Giải pháp đầu tiên là sử dụng kỹ thuật reflection như tôi đã ví dụ ở trong scenario trên, chỉ khác ở chỗ thay vì truy cập property thì chúng sẽ invoke member.&lt;/p&gt;  &lt;p&gt;Giải pháp thứ 2, giải pháp này mang tính “pattern” hơn là định nghĩa 1 interface IFlyable trong đó có method Fly(). Sau đó chúng ta implement interface này cho các class cần thiết. Như vậy với cách này, chúng ta thấy rằng về mặt kỹ thuật tuy không quá phức tạp, nhưng về khối lượng công việc phải thực hiện là rất nhiều, phải thực hiện chỉnh sửa khá nhiều. Khi đó, phương thức cần thực hiện của tôi sẽ như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ea861f1d-4ead-4105-b36f-ecfb61b17888" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; LetFly(&lt;span style="color:#2b91af;"&gt;IFlyable&lt;/span&gt; flyableObject)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    flyableObject.Fly();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;em&gt;Tuy nhiên, với việc sử dụng &lt;strong&gt;dynamic&lt;/strong&gt;, chúng ta sẽ thấy rằng công việc bây giờ lại trở nên rất đơn giản – không phải sử dụng kỹ thuật reflection, không phải định nghĩa một interface mới và hoàn toàn không cần phải thực hiện bất kỳ thay đổi nào trong code đã có sẵn. Method LetFly sẽ được thay đổi lại như sau&lt;/em&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:25ff47e1-71d4-4041-bbc3-41d51a2c13ac" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; LetFly(&lt;span style="color:#0000ff;"&gt;dynamic&lt;/span&gt; flyableObject)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;    flyableObject.Fly();&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Một số hạn chế khi sử dụng dynamic&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Nếu các thành phần của một class như properties, methods được khai báo là private hoặc protected thì dynamic object sẽ không gọi được đến các thành phần đó. &lt;/li&gt;    &lt;li&gt;Nếu một object được khai báo là dynamic thì object đó sẽ không gọi được đến các extension methods &lt;/li&gt;    &lt;li&gt;Các dynamic object sẽ không thể gọi đến các methods được đánh dấu là static &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Nếu bạn nào có những scenario sử dụng dynamic khác thì có thể để lại comment ở phía dưới.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7083" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Chương trình tư vấn nghề nghiệp cho sinh viên CNTT và định hướng học tập với công nghệ Microsoft dành cho sinh viên Đại học Khoa học Huế</title><link>http://msdnvietnam.net/blogs/mvpvn/archive/2010/09/28/ch-ng-tr-236-nh-t-v-n-ngh-nghi-p-cho-sinh-vi-234-n-cntt-v-224-nh-h-ng-h-c-t-p-v-i-c-244-ng-ngh-microsoft-d-224-nh-cho-sinh-vi-234-n-i-h-c-khoa-h-c-hu.aspx</link><pubDate>Mon, 27 Sep 2010 20:13:46 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7095</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Vào 8 giờ sáng ngày 26 tháng 9 năm 2010, tại ĐH Khoa học Huế đã diễn ra buổi hội thảo rất hào hứng với sự tham gia của hơn 100 sinh viên ngành công nghệ thông tin, nội dung tập trung vào 02 vấn đề chính là tư vấn nghề nghiệp cho sinh viên ngành công nghệ thông tin, đồng thời định hướng học tập cho các bạn với các nền tảng công nghệ Microsoft và do anh Lê Hoàng Dũng – chuyên gia về nền tảng phát triển ứng dụng Web ASP.NET MVC trực tiếp trình bày. &lt;/p&gt;  &lt;p&gt;Chi tiết của chương trình hội thảo bao gồm:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Giới thiệu về xu thế phát triển CNTT của thế giới, vị trí và vai trò của Việt Nam&lt;/li&gt;    &lt;li&gt;Vị trí và tiềm năng phát triển về CNTT của Thừa Thiên – Huế trong xu thế hiện nay, vai trò và&amp;#160; trách nhiệm của nhân lực CNTT nói chung và sinh viên đang học các ngành về CNTT nói riêng.&lt;/li&gt;    &lt;li&gt;Phương pháp học tập, nghiên cứu và chia sẻ thông tin của sinh viên CNTT; cách thức học tiếng anh hiệu quả để hỗ trợ cho nghề nghiệp.&lt;/li&gt;    &lt;li&gt;Giới thiệu các xu hướng phát triển phần mềm và các cộng đồng CNTT của VN và thế giới, tác động của cộng đồng lên sự phát triển của nghành CNTT&lt;/li&gt;    &lt;li&gt;Giới thiệu về các công nghệ đang được Microsoft chú trọng phát triển; chương trình Microsoft Student Partners ( MSP) và cơ hội để trở thành 01 MSP&lt;/li&gt;    &lt;li&gt;Giới thiệu về cộng đồng đa ngôn ngữ Geeksship.com&lt;/li&gt;    &lt;li&gt;Giới thiệu tổng quan về ASP.NET MVC và chương trình đào tạo ASP.NET MVC &amp;amp; Silverlight do anh Dũng giảng dạy hàng tuần dành cho sinh viên.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Một số hình ảnh của buổi hội thảo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0819_5F00_3D2F79EF.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0819" border="0" alt="IMG_0819" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0819_5F00_thumb_5F00_51F14CA2.jpg" width="491" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0823_5F00_69A88408.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0823" border="0" alt="IMG_0823" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0823_5F00_thumb_5F00_4B9A5047.jpg" width="496" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0828_5F00_37A0BDB1.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0828" border="0" alt="IMG_0828" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0828_5F00_thumb_5F00_4B1DF785.jpg" width="498" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0834_5F00_7B64CC3B.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0834" border="0" alt="IMG_0834" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0834_5F00_thumb_5F00_76BE9BB4.jpg" width="501" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0835_5F00_50E87551.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0835" border="0" alt="IMG_0835" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0835_5F00_thumb_5F00_5DB2A5A2.jpg" width="502" height="378" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0837_5F00_49B9130C.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMG_0837" border="0" alt="IMG_0837" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mvpvn/IMG_5F00_0837_5F00_thumb_5F00_3D1B4023.jpg" width="508" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7095" width="1" height="1"&gt;</description></item><item><title>Giới thiệu về nền tảng phát triển Web của Microsoft</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/09/24/gi-i-thi-u-v-n-n-t-ng-ph-225-t-tri-n-web-c-a-microsoft.aspx</link><pubDate>Thu, 23 Sep 2010 16:33:00 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7068</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>0</slash:comments><description>&lt;h1&gt;Giới thiệu về Microsoft Web Platform&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_5CC3ACCE.png"&gt;&lt;img height="254" width="448" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_090033B3.png" align="right" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Microsoft Web Platform l&amp;agrave; một nền tảng cung cấp một giải ph&amp;aacute;p to&amp;agrave;n diện cho việc x&amp;acirc;y dựng, ph&amp;aacute;t triển, vận h&amp;agrave;nh v&amp;agrave; quản l&amp;yacute; c&amp;aacute;c ứng dụng tr&amp;ecirc;n nền web.&lt;/p&gt;
&lt;p align="justify"&gt;Microsoft Web Platform được x&amp;acirc;y dựng tr&amp;ecirc;n nền tảng của họ Windows Server c&amp;ugrave;ng với dịch vụ Internet Information Services mang lại một m&amp;aacute;y chủ web đầy sức mạnh, cung cấp khả năng quản l&amp;yacute;, vận h&amp;agrave;nh c&amp;aacute;c ứng dụng web một c&amp;aacute;ch linh hoạt v&amp;agrave; hiệu quả.&lt;/p&gt;
&lt;p align="justify"&gt;M&amp;aacute;y chủ cơ sở dữ liệu Microsoft SQL Server mang lại khả năng lưu trữ mạnh mẽ v&amp;agrave; an to&amp;agrave;n cho c&amp;aacute;c ứng dụng web với khối lượng v&amp;agrave; lưu lượng dữ liệu lớn. B&amp;ecirc;n cạnh đ&amp;oacute;, MS SQL Server c&amp;ograve;n cung c&amp;aacute;c dịch vụ kh&amp;aacute;c như Reporting Services, Analysis Services, Integration Services, &amp;hellip;&lt;/p&gt;
&lt;p align="justify"&gt;L&amp;agrave; một th&amp;agrave;nh phần rất nổi bật trong .NET Framework, ADO.NET Entity Framework mang lại một phương ph&amp;aacute;p hiệu quả nhất cho việc &amp;aacute;nh xạ giữa dữ liệu từ c&amp;aacute;c cơ sở dữ liệu quan hệ đến c&amp;aacute;c đối tượng trong ứng dụng. Phi&amp;ecirc;n bản mới nhất hiện nay của ADO.NET EF được cung cấp trong .NET Framework 4.0 được hỗ trợ rất nhiều t&amp;iacute;nh năng như ORM (Object-relational Mapping), l&amp;agrave;m việc với Store Procedures, Functions, &amp;hellip; gi&amp;uacute;p giảm thiểu tối đa c&amp;aacute;c c&amp;ocirc;ng việc tương t&amp;aacute;c với cơ sở dữ liệu kh&amp;ocirc;ng cần thiết khi x&amp;acirc;y dựng một ứng dụng web.&lt;/p&gt;
&lt;p align="justify"&gt;Microsoft cung cấp thư viện ASP.NET với hai m&amp;ocirc; h&amp;igrave;nh ph&amp;aacute;t triển ứng dụng web kh&amp;aacute; phổ biến hiện nay l&amp;agrave; Web Forms v&amp;agrave; MVC. B&amp;ecirc;n cạnh việc tập trung hỗ trợ về nền tảng x&amp;acirc;y dựng, ph&amp;aacute;t triển, vận h&amp;agrave;nh v&amp;agrave; quản l&amp;yacute; c&amp;aacute;c ứng dụng, Microsoft c&amp;ograve;n cung cấp một số thư viện hỗ trợ kh&amp;aacute;c như Ajax Control Toolkit, jQuery, &amp;hellip; nhằm n&amp;acirc;ng cao tối đa trải nghiệm về ph&amp;iacute;a người d&amp;ugrave;ng đầu cuối cho c&amp;aacute;c ứng dụng web.&lt;/p&gt;
&lt;p align="justify"&gt;Về c&amp;ocirc;ng cụ ph&amp;aacute;t triển c&amp;aacute;c ứng dụng web, Visual Studio 2010 l&amp;agrave; một giải ph&amp;aacute;p ph&amp;aacute;t triển ứng dụng to&amp;agrave;n diện với rất nhiều t&amp;iacute;nh năng mạnh mẽ, n&amp;acirc;ng cao t&amp;iacute;nh cộng t&amp;aacute;c trong quy tr&amp;igrave;nh ph&amp;aacute;t triển ứng dụng. B&amp;ecirc;n cạnh Visual Studio 2010, Microsoft c&amp;ograve;n đưa ra c&amp;aacute;c sản phẩm kh&amp;aacute;c với t&amp;iacute;nh năng đơn giản hơn nhưng vẫn mang lại t&amp;iacute;nh năng chuy&amp;ecirc;n nghiệp như Web Matrix, Expression Web&lt;/p&gt;
&lt;h2&gt;Giới thiệu về Microsoft Web Installer (Web PI)&lt;/h2&gt;
&lt;p&gt;Web PI l&amp;agrave; một c&amp;ocirc;ng cụ miễn ph&amp;iacute; v&amp;agrave; nhỏ gọn được cung cấp nhằm gi&amp;uacute;p cho việc download v&amp;agrave; c&amp;agrave;i đặt c&amp;aacute;c ứng dụng trong Microsoft Web Platform một c&amp;aacute;ch nhanh ch&amp;oacute;ng v&amp;agrave; dễ d&amp;agrave;ng. C&amp;aacute;c ứng dụng trong Microsoft Web Platform bao gồm cả server, c&amp;aacute;c dịch vụ, c&amp;ocirc;ng cụ ph&amp;aacute;t triển, frameworks v&amp;agrave; c&amp;aacute;c ứng dụng web.&lt;/p&gt;
&lt;p&gt;Microsoft Web PI được cung cấp tại địa chỉ &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx" title="http://www.microsoft.com/web/downloads/platform.aspx"&gt;http://www.microsoft.com/web/downloads/platform.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_4B239C36.png"&gt;&lt;img height="479" width="644" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_14199830.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C&amp;aacute;c ứng dụng được cung cấp miễn ph&amp;iacute; th&amp;ocirc;ng qua &lt;a href="http://www.microsoft.com/web/gallery/"&gt;Windows Web Application Gallery&lt;/a&gt;. B&amp;ecirc;n cạnh c&amp;aacute;c ứng dụng web được x&amp;acirc;y dựng tr&amp;ecirc;n nền tảng Microsoft Web Platform như Umbraco, DotNetNuke, &amp;hellip; Windows Web Application Gallery c&amp;ograve;n cung cấp c&amp;aacute;c ứng dụng web kh&amp;aacute;c tr&amp;ecirc;n nền PHP v&amp;agrave; MySQL như WordPress, Jomla!, Moodle, &amp;hellip; Tất cả được tải về v&amp;agrave; c&amp;agrave;i đặt ho&amp;agrave;n to&amp;agrave;n tự động.&lt;/p&gt;
&lt;p&gt;Đ&amp;acirc;y l&amp;agrave; một video demo việc c&amp;agrave;i đặt ứng dụng WordPress tr&amp;ecirc;n local được thực hiện th&amp;ocirc;ng qua ứng dụng Web PI. (Chọn chất lượng 720p v&amp;agrave; xem full screen để xem được chi tiết)&lt;/p&gt;
&lt;p&gt;(Please visit the site to view this media)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7068" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/Web/default.aspx">Web</category></item><item><title>SPServices: Cascading Drop-Down List in SharePoint 2010 List using jQuery</title><link>http://msdnvietnam.net/blogs/quang/archive/2010/09/21/spservices-cascading-drop-down-list-in-sharepoint-2010-list-using-jquery.aspx</link><pubDate>Tue, 21 Sep 2010 03:18:45 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7058</guid><dc:creator>Nguyen Ba Quang</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;1. Create Cities custom list:&lt;/p&gt;  &lt;p&gt;2. Create Districts Custom list: with City lookup column&lt;/p&gt;  &lt;p&gt;3. Create Ward custom list: with District lookup column&lt;/p&gt;  &lt;p&gt;4. Create Addresses list: with City, District, Ward lookup columns&lt;/p&gt;  &lt;p&gt;Using following scripts in the NewForm.aspx of Addresses&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script src=&lt;span style="color:#006080;"&gt;&amp;quot;/TimeSheet/jQuery%20Libraries/jquery-1.4.2.min.js&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script src=&lt;span style="color:#006080;"&gt;&amp;quot;/TimeSheet/jQuery%20Libraries/jquery.SPServices-0.5.4.min.js&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script language=&lt;span style="color:#006080;"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        $(document).ready(function() {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            $().SPServices.SPCascadeDropdowns({&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipList: &lt;span style="color:#006080;"&gt;&amp;quot;Districts&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListParentColumn: &lt;span style="color:#006080;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListChildColumn: &lt;span style="color:#006080;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListSortColumn: &lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                parentColumn: &lt;span style="color:#006080;"&gt;&amp;quot;City&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                childColumn: &lt;span style="color:#006080;"&gt;&amp;quot;District&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                promptText: &lt;span style="color:#006080;"&gt;&amp;quot;Choose District...&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                debug: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            $().SPServices.SPCascadeDropdowns({&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipList: &lt;span style="color:#006080;"&gt;&amp;quot;Ward&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListParentColumn: &lt;span style="color:#006080;"&gt;&amp;quot;District&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListChildColumn: &lt;span style="color:#006080;"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                relationshipListSortColumn: &lt;span style="color:#006080;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                parentColumn: &lt;span style="color:#006080;"&gt;&amp;quot;District&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                childColumn: &lt;span style="color:#006080;"&gt;&amp;quot;Ward&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                promptText: &lt;span style="color:#006080;"&gt;&amp;quot;Choose Ward...&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;                debug: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Hope this help!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7058" width="1" height="1"&gt;</description></item><item><title>SPServices: Using jQuery to auto fill current user information in SharePoint 2010</title><link>http://msdnvietnam.net/blogs/quang/archive/2010/09/21/spservices-using-jquery-to-auto-fill-current-user-information-in-sharepoint-2010.aspx</link><pubDate>Tue, 21 Sep 2010 03:18:13 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7057</guid><dc:creator>Nguyen Ba Quang</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Using following script in your page by SharePoint Designer or Content Editor WP&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script language=&lt;span style="color:#006080;"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#006080;"&gt;&amp;quot;/TimeSheet/jQuery%20Libraries/jquery-1.4.2.min.js&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script language=&lt;span style="color:#006080;"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#006080;"&gt;&amp;quot;/TimeSheet/jQuery%20Libraries/jquery.SPServices-0.5.4.min.js&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;script language=&lt;span style="color:#006080;"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; type=&lt;span style="color:#006080;"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;$(document).ready(function() {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    var userDepartment = $().SPServices.SPGetCurrentUser({&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        fieldName: &lt;span style="color:#006080;"&gt;&amp;quot;Department&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    });&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    $(&lt;span style="color:#006080;"&gt;&amp;quot;input[Title=&amp;#39;Department&amp;#39;]&amp;quot;&lt;/span&gt;).val(userDepartment);    &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;});&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In this script, we auto fill Department textbox by department of current user.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sympmarc.com/2010/04/29/populating-a-sharepoint-list-form-with-the-current-user-information/"&gt;Reference&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7057" width="1" height="1"&gt;</description></item><item><title>Chương trình tập huấn kỹ năng dành cho Microsoft Student Partners năm học 2010 - 2011</title><link>http://msdnvietnam.net/blogs/mspvn/archive/2010/09/20/ch-ng-tr-236-nh-t-p-hu-n-k-n-ng-d-224-nh-cho-microsoft-student-partners-n-m-h-c-2010-2011.aspx</link><pubDate>Mon, 20 Sep 2010 14:39:29 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7053</guid><dc:creator>Phong Le Ngoc Ky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Vào sáng thứ 7 ngày 18/09 tại văn phòng Hồ Chí Minh, Microsoft đã tiến hành tổ chức chương trình tập huấn dành cho cộng đồng các Microsoft Student Partners (MSP) tại TP. Hồ Chí Minh. Đây là một trong những buổi thuộc chương trình tập huấn dành cho các MSP nhằm mục tiêu nâng cao kiến thức chuyên môn công nghệ và kỹ năng hoạt động cộng đồng.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nội dung của buổi tập huấn tập trung vào 3 chủ đề chính:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;1. Chương trình hoạt động cộng đồng dành cho MSP trong năm 2010 – 2011.&lt;/p&gt;  &lt;p&gt;2. Tập huấn kỹ năng quản lí dự án và lập chương trình hoạt động.&lt;/p&gt;  &lt;p&gt;3. Chuyên để công nghệ: Giới thiệu về nền tảng phát triển phần mềm .Net Framework 4.0 với Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Dưới đây là một số hình ảnh về buổi tập huấn dành cho MSP:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image002_5F00_3EB8F32A.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image002_5F00_thumb_5F00_785B8D14.jpg" width="493" height="381" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Bạn Nguyễn Bảo Duy đang trình&amp;#160; bày về .Net Framework 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image004_5F00_1A63E8DB.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image004" border="0" alt="clip_image004" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image004_5F00_thumb_5F00_5EC3DA1A.jpg" width="490" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Không khí thảo luận sôi nôi và đầy hào hứng giữa các bạn MSP Candidate tại các trường Đại học tại TP.HCM&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image006_5F00_1147378D.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image006" border="0" alt="clip_image006" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image006_5F00_thumb_5F00_334F9353.jpg" width="493" height="386" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Các bạn chăm chú ghi chú về tính năng mới Debugger Visualization trong Visual Studio 2010&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image008_5F00_1836C445.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image008" border="0" alt="clip_image008" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image008_5F00_thumb_5F00_0AF03B32.jpg" width="501" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Các bạn đặt câu hỏi và thảo luận về các vấn đề trong .Net Framework 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image010_5F00_28EE4926.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image010" border="0" alt="clip_image010" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/clip_5F00_image010_5F00_thumb_5F00_38ADDE2A.jpg" width="509" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Buổi tập huấn kết thúc với nhiều vấn đề đọng lại&amp;#160; trong lòng các bạn, và mọi người cùng nhau chụp một tấm hình kỷ niệm !!!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/460_5F00_60_5F00_conservative_5F00_24B44B94.gif"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="460_60_conservative" border="0" alt="460_60_conservative" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mspvn/460_5F00_60_5F00_conservative_5F00_thumb_5F00_43F6F267.gif" width="507" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7053" width="1" height="1"&gt;</description></item><item><title>Thông báo bảo mật quan trọng của Microsoft cho ASP.NET</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/09/20/th-244-ng-b-225-o-b-o-m-t-quan-tr-ng-c-a-microsoft-cho-asp-net.aspx</link><pubDate>Sun, 19 Sep 2010 18:46:59 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7050</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Vào ngày 17 tháng 9 vừa qua, Microsoft đã đưa ra một cảnh báo quan trọng đối với một điểm yếu trong ASP.NET tại &lt;a title="http://www.microsoft.com/technet/security/advisory/2416728.mspx" href="http://www.microsoft.com/technet/security/advisory/2416728.mspx"&gt;http://www.microsoft.com/technet/security/advisory/2416728.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Lỗ hổng này sẽ cho phép các hacker khai thác nhằm tấn công vào các ứng dụng ASP.NET, cụ thể như sau&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Các hacker có thể thông qua điểm yếu này để download trực tiếp các tập tin trong ứng dụng ASP.NET, như tập tin web.config – đây là một tập tin rất quan trọng của một ứng dụng ASP.NET khi mà các thông tin nhạy cảm được lưu trữ ở đây (như connection string, authentication information, ….)&lt;/li&gt;    &lt;li&gt;Các hacker khi khai thác được lỗ hổng này có thể thực hiện việc giải mã các dữ liệu đã được mã hóa được gửi đi từ phía client (như các dữ liệu được lưu trữ trong ViewState)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Nguyên tắc hoạt động: Các hacker sẽ dựa trên nguyên tắc dự đoán dữ liệu sẽ được mã hóa như thế nào từ các lỗi nhận được từ phía server. Ở đây, cơ chế giống như việc trả lời một câu hỏi dựa trên việc trả lời hàng loạt các câu hỏi gợi ý khác nhau liên quan đến câu hỏi. Các hacker sẽ gửi nhiều lần và liên tục các dữ liệu cố ý gây lỗi để nhận được các lỗi tương ứng được trả lại từ phía server, từ đó tìm hiểu được phương thức mã hóa dữ liệu tương ứng.&lt;/p&gt;  &lt;h3&gt;Phương án giải quyết&lt;/h3&gt;  &lt;p&gt;Để có thể giải quyết các điểm yếu do lỗ hổng này gây ra, các nhà phát triển phát triển web có thể thực hiện các phương án sau&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Bật tính năng &amp;lt;customErrors&amp;gt; trong ứng dụng và đảm bảo rằng khi ứng dụng xảy ra lỗi thì ứng dụng sẽ được chuyển đến &lt;strong&gt;một trang thông báo lỗi duy nhất&lt;/strong&gt;. Bằng phương án, các hacker sẽ không thể theo dõi được các lỗi khác nhau của ứng dụng.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Đối với các ứng dụng sử dụng ASP.NET 3.5 trở xuống&lt;/h3&gt;  &lt;p&gt;Cần tùy chỉnh tập tin web.config như sau để bật tính năng &amp;lt;customErrors&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7d41f60f-0cc6-41ea-ae33-346d75d4dc30" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;customErrors&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;On&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;defaultRedirect&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;~/error.html&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;h3&gt;Đối với các ứng dụng sử dụng ASP.NET 3.5SP1 hoặc 4.0&lt;/h3&gt;  &lt;p&gt;Cần tùy chỉnh tập tin web.config như sau để bật tính năng &amp;lt;customErrors&amp;gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e822a6cd-6378-4e0e-98cc-98e57f6fda8b" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;customErrors&lt;/span&gt;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;mode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;On&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;redirectMode&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;ResponseRewrite&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;defaultRedirect&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt;~/error.aspx&lt;/span&gt;&amp;quot;&lt;span style="color:#0000ff;"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Trong đó, nội dung của các trang error.html hoặc error.aspx là tùy ý.&lt;/p&gt;  &lt;p&gt;Bên cạnh đó, Microsoft cũng đề xuất nội dung của trang error.aspx nên được sử dụng như sau&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9049e7fe-4c30-4af0-8f4c-dbb6838e069f" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#000080;color:#fff;font-family:Verdana, Tahoma, Arial, sans-serif;font-weight:bold;padding:2px 5px;"&gt;Code Snippet&lt;/div&gt; &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;"&gt; &lt;li&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; %&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;lt;%@ Import Namespace=&amp;quot;System.Security.Cryptography&amp;quot; %&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;lt;%@ Import Namespace=&amp;quot;System.Threading&amp;quot; %&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;   void Page_Load() {&lt;/li&gt; &lt;li&gt;      byte[] delay = new byte[1];&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;      RandomNumberGenerator prng = new RNGCryptoServiceProvider();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;      prng.GetBytes(delay);&lt;/li&gt; &lt;li&gt;      Thread.Sleep((int)delay[0]);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        &lt;/li&gt; &lt;li&gt;      IDisposable disposable = prng as IDisposable;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;      if (disposable != null) { disposable.Dispose(); }&lt;/li&gt; &lt;li&gt;    }&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;lt;/script&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;lt;html&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;    &amp;lt;title&amp;gt;Error&amp;lt;/title&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;lt;/head&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;lt;body&amp;gt;&lt;/li&gt; &lt;li&gt;    &amp;lt;div&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;        An error occurred while processing your request.&lt;/li&gt; &lt;li&gt;    &amp;lt;/div&amp;gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;lt;/body&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;lt;/html&amp;gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Kiểm tra kết quả&lt;/h3&gt;  &lt;p&gt;Để có thể kiểm tra kết quả, sau khi đã cấu hình lại cho ứng dụng, hãy truy cập vào một trang không tồn tại trong ứng dụng. Nếu như trang customError xuất hiện có nghĩa là ứng dụng đã được cấu hình đúng.&lt;/p&gt;  &lt;p&gt;Bên cạnh đó, Microsoft cũng cung cấp một script để chạy quét qua các ứng dụng đang tồn tại trên local server để kiểm tra xem các ứng dụng đã được cấu hình bật chức năng &amp;lt;customErrors&amp;gt; hay chưa. Có thể download script đó tại đây &lt;a title="published a .vbs script" href="http://www.asp.net/media/782788/detectcustomerrorsdisabledv30.zip"&gt;.vbs script&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Tìm hiểu thêm về lỗ hổng&lt;/h2&gt;  &lt;p&gt;Để có thể tìm hiểu chi tiết thêm về lỗ hổng này, có thể truy cập các trang sau&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/technet/security/advisory/2416728.mspx"&gt;Microsoft Security Advisory 2416728&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx"&gt;Understanding the ASP.NET Vulnerability&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/b/msrc/archive/2010/09/17/security-advisory-2416728-released.aspx"&gt;Microsoft Security Response Center Blog Post&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx"&gt;Important: ASP.NET Security Vulnerability&lt;/a&gt; by ScottGu&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7050" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>.NET Framework 4 Training for MSPs</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/09/18/net-framework-4-training-for-msps.aspx</link><pubDate>Sat, 18 Sep 2010 07:01:10 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7047</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Today is a great day when I presented to all of MSPs in HCMC about What’s new in .NET Framework 4.0 and some cool new feature of Visual Studio 2010.&lt;/p&gt;  &lt;p&gt;There are some keynote for you&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_7ECAF960.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_5DD786B9.png" width="518" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft .NET Framework provides a secure, reliable, high-performance development framework that enables developers to easily reuse skills and assets across desktop, web, devices, server and cloud. It also provides developers with higher levels of abstraction, allowing them focus on the business logic. And increasing developer productivity while preserving compatibility are the key drivers of every .NET release.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_38D9C640.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_7C41C7A2.png" width="644" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And you can download my slide-deck at here &lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/What%5E4s%20new%20in%20.NET%20Framework%204.0.pdf" target="_blank"&gt;What&amp;#39;s new in .NET Framework 4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can also download key-binding docs of Visual Studio 2010 for C# here &lt;a href="http://cid-06fa25cc4e99c490.office.live.com/self.aspx/.Public/VS%20KB%20Brochure%20C%5E3%20m2.pdf" target="_blank"&gt;VS2010 C# Keybinding&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7047" width="1" height="1"&gt;</description><category domain="http://msdnvietnam.net/blogs/duynb/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Ra mắt Microsoft Internet Explorer 9 Beta</title><link>http://msdnvietnam.net/blogs/duynb/archive/2010/09/16/ra-m-t-microsoft-internet-explorer-9-beta.aspx</link><pubDate>Wed, 15 Sep 2010 20:05:50 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:7035</guid><dc:creator>Duy Nguyen</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;&lt;img title="Experience a more beautiful web" alt="Experience a more beautiful web" src="http://res2.windows.microsoft.com/resbox/en/Internet%20Explorer/Main/c/4/c4253307-c63d-409a-81cb-d27074accf87/c4253307-c63d-409a-81cb-d27074accf87.jpg" width="640" height="126" /&gt;&lt;/p&gt;  &lt;p&gt;Vào ngày 16-09, Microsoft đã chính thức ra mắt phiên bản thử nghiệm Beta của trình duyệt Internet Explorer 9. Trình duyệt Internet Explorer 9 được trang bị những tính năng mạnh mẽ, tận dụng khả năng của phần cứng trong việc hiển thị văn bản, hình ảnh, video và âm thanh giúp cho các website hoạt động như là các ứng dụng cài trên máy tính. Với Javascript engine mới có tên Chakra sẽ giúp cho các ứng dụng web được tải về nhanh chóng và làm việc trơn tru.&lt;/p&gt;  &lt;p&gt;Giao diện mới và mang tính đơn giản cao, tạo cảm giác thoải mái khi sử dụng&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_3AB3A52D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_19BC1E87.png" width="644" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Một tính năng mới trong trình duyệt Internet Explorer 9 kết hợp với hệ điều hành Windows 7 là cho phép người dùng có khả năng “pin” một trang web vào thanh taskbar. Khi một trang web được truy cập từ thanh taskbar thì trình duyệt IE9 sẽ tự động thay đổi màu sắc giao diện sao cho phù hợp với màu sắc chủ đạo trong logo trang web&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_71F556C2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_668BF6EB.png" width="644" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Giao diện mới cho Notification Bar&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_49EEB971.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_7EEB22D4.png" width="644" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Một cải tiến rất lớn trong Internet Explorer 9 là Download Manager. Download Manager trong IE9 cho phép quản lý việc nhiều quá trình download cùng một lúc trên một cửa sổ duy nhất và cho phép tiếp tục download mặc dù người dùng đã đóng tất cả các cửa sổ của trình duyệt.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_4B7F39AB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_020CE4F0.png" width="644" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;IE9 còn được thêm vào trang New Tab giúp cho người dùng truy cập nhanh chóng truy cập vào các trang web ưa thích, bên cạnh các logo của các trang web được thể hiện ở trang New Tab, Microsoft còn đưa ra sự đánh giá mức độ ghé thăm thường xuyên của trang web thông qua một thang đo ở dưới mỗi logo website.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_3B434BE5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_26ADD69A.png" width="644" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tính năng One Box là một tính năng hoàn toàn mới trong IE9, cho phép người dùng có thể thực hiện tìm kiếm bằng cách nhập trực tiếp các từ khóa vào Address Bar của trình duyệt. Kết quả tìm kiếm có thể được lấy từ rất nhiều nguồn khác nhau như Bing, Facebook, Wiki, etc. Người dùng có thể cài đặt các dịch vụ tìm kiếm khác nhau tại địa chỉ &lt;a title="http://www.ieaddons.com/en/searchproviders" href="http://www.ieaddons.com/en/searchproviders"&gt;http://www.ieaddons.com/en/searchproviders&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_5211F794.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_6FA3D293.png" width="644" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;IE9 còn cho phép người dùng có khả năng tùy chỉnh vị trí của các tab trong cùng một cửa sổ hoặc khác cửa sổ một các linh hoạt chỉ bằng thao tác kéo thả &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_7E1ECEB8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://msdnvietnam.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/duynb/image_5F00_thumb_5F00_77B7AC90.png" width="644" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tham khảo thêm các tính khác và download phiên bản Beta trình duyệt Internet Explorer 9 tại &lt;a title="http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/" href="http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/"&gt;http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msdnvietnam.net/aggbug.aspx?PostID=7035" width="1" height="1"&gt;</description></item></channel></rss>
