Fake IP bằng firefox

16 12 2009

Bạn muốn truy cập vào 1 số trang web ngăn ko cho IP Việt Nam vào, hay đơn giản bạn muốn đăng nhập 1 trang web cùng lúc 2 username để chém gió mà web đó ko cho login 2 user 1 máy( 1 IP) —-> Hãy Fake IP
Mình hướng dẫn dùng Proxy trên Firefox vì cái này pro nhất:
đầu tiên các bạn tải 1 addon SwitchProxy Tool 1.4.1 của FF về bằng địa chỉ dưới đây:

https://addons.mozilla.org/vi/firefox/addon/125

sau khi tải về nó sẽ tự động cài vào FF cho bạn,và yêu cầu các bạn Restart lại FF là xong,sau khi restart các bạn sẽ thấy một cái Tool mới trên thanh công cụ cua FF đó chính là addon SwitchProxy Tool 1.4.1.
This image has been resized.Click to view original image

Tiếp theo là các bạn đi tìm Proxy để vượt tường lửa.

Các bạn vào trang web dưới đây:

http://www.proxy4free.com/page1.html

http://proxy4free.com/page1.html

sẽ cung cấp cho các bạn những proxy còn sống và tốt các bạn chỉ việc copy phần IP và phần Port về sau đó bạn click vào “ADD” rồi next (của addon trên thanh công cụ của FF),
This image has been resized.Click to view original image

đặt tên cho nó gì cũng được, điền vào phần http proxy và port ở cái trang phía trên mình vừa kiếm được.

sau đó chọn Apply kế bên textbox có tên Proxy là xong.bây giờ các bạn thử vào những trang web bị cản thử xem sao.nếu các bạn vào được website dưới đây nghĩa là các bạn đã thành công

VD:http://www.vietcatholic.net/news/

Một điều lưu ý là khi dùng proxy nếu các bạn may mắn thì sẽ nhận được proxy tốt->tốc độ nhanh,và xui thì chậm,nhưng vẫn sài được.cũng nên chọn những Proxy từ nước khác VN và Port 80 nhé các bạn,và nên cập nhật proxy thường xuyên để tránh gặp phải Proxy die keke.

vì thế chỉ khi nào muốn vượt tường lửa để download ở những trang web cản IP việt Nam thì các ban mới sài Proxy.còn bình thường các bạn nên tắt proxy để lướt web nhanh hơn (chọn None trên thanh công cụ rồi Apply là ok).

Chúc thành công.





Kiểu dữ liệu Enum

21 10 2009

Enum là kiểu dữ liệu liệt kê. Giúp bạn tổ chức dữ liệu khoa học hơn, code được trong sáng dễ hiểu hơn.

Enum là kiểu dữ liệu liệt kê. Giúp bạn tổ chức dữ liệu khoa học hơn, code được trong sáng dễ hiểu hơn.

Đầu tiên cùng xét một ví dụ đơn gián:

class EnumTest1

{

//đầu tiên bạn tạo ra một enum, với giá trị khởi đầu là ‘none’

enum StackTag

{

None, // giá trị mặc định là 0.

BoldTag, // 1

ItalicsTag, // 2

HyperlinkTag, // và 3.

};

// cách sử dụng kiểu enum

public EnumTest1()

{

// một đối tượng generic sử dụng một enum

Stack stack = new Stack();

stack.Push(StackTag.BoldTag); // thêm một phần tử vào stack

stack.Push(StackTag.ItalicsTag); // Phần tử thứ 2

StackTag thisTag = stack.Pop(); // Phần tử cuối

}

}

Bạn có thể lấy tên tùy ý cho enum miễn là phải có từ khóa enum, Chúng ta không gán một số cho một phần tử của enum, nó sẽ mặc định là bắt đầu từ 0 và tự động tăng.

Chúng ta có thể sử dụng Generic collections với enum. Hoặc List cũng có thể được thay thế. Đây là một kĩ thuật hiệu quả.

Enum là một kiểu giá trị tùy chỉnh được lưu trong stack và được khởi tạo từ 0.
In ra tên của enum.

Trong C#, bạn có một số tên cho enums. Có thể là “None”, “Hidden”, và “Visible”. Nó được nhớ bởi C# và không được sửa lại như một số biến khác. Do vậy chúng ta có thể dùng code in chúng ra

// Enum này có giá trị mặc định

enum VisibleType

{

None = 0, // Nên là 0

Hidden = 2, // có thể là một số bất kì

Visible = 4

};

enum BugEnum

{

Cat = 1,

Dog = 2

};

// in ra tên của enum

public void Example_ToString()

{

BugEnum bugEnum = BugEnum.Dog;

VisibleType visEnum = VisibleType.Hidden;

// chúng ta có 2 enum và muốn in ra tên của chúng

Console.WriteLine(bugEnum.ToString() + “, ” + visEnum.ToString());

// Kết quả “Dog, Hidden”.

}

Chuyển kiểu string về enum

Bạn phải sử dụng phương thức Enum.Parse. Toán tử typeof dùng để truyền tham số cho hàm Parse – xác định enum nào?

public void Example_Parse()

{

// Chúng ta có một string có tên trùng với tên một enum.

string dogString = “Dog”;

// Chuyển nó về kiểu enum dùng Parse

BugEnum bugEnum = (BugEnum)Enum.Parse(typeof(BugEnum), dogString);

if (bugEnum == BugEnum.Dog)

{

// xâu đã được chuyển đổi và chúng ta có 2 giá trị là dog

Console.WriteLine(“Both are dog values.”);

}

}

Sử dụng câu lệnh Switch với Enums.

Bạn sử dụng switch trong trường hợp một enum là một tập con của một dải enum.

public enum StackTag

{

None,

BoldTag,

ItalicsTag,

HyperlinkTag

};

public static bool IsFormatTag(StackTag tag)

{

switch (tag)

{

case StackTag.BoldTag:

case StackTag.ItalicsTag:

return true;

default:

return false;

}

}





Một số hàm xử lý ngày tháng

21 10 2009

Hàm kiểu DateTime dùng để tìm kiếm ngày bất kì. Có thể tìm được ngày bắt đầu và ngày kết thúc của một năm. untitled.bmp

Hàm kiểu DateTime dùng để tìm kiếm ngày bất kì. Có thể tìm được ngày bắt đầu và ngày kết thúc của một năm (cả năm nhuận).

Đây là hàm để tìm ra ngày “hôm qua” và “ngày mai”

static class DateHelpers

{

// Hàm tìm ngày hôm qua

static public DateTime GetYesterday()

{

DateTime yesterday = DateTime.Today.AddDays(-1);

Console.WriteLine(“Yesterday: ” + yesterday.ToShortDateString());

return yesterday;

}

}

“Ngày mai” và “hôm nay”

static class DateHelpers

{

static public void ShowToday()

{

// ngày hôm nay

DateTime today = DateTime.Today;

Console.WriteLine(“Today: ” + today.ToShortDateString());

}

static public DateTime GetTomorrow()

{

// ngày mai

DateTime tomorrow = DateTime.Today.AddDays(1);

Console.WriteLine(“Tomorrow: ” + tomorrow.ToShortDateString());

return tomorrow;

}

}

Ngày đầu tiên của năm

static public DateTime FirstDayOfYear()

{

return FirstDayOfYear(DateTime.Today);

}

//ngày đầu tiên của năm với tham số ngày được truyền vào

FirstDayOfYear(DateTime selectedDay)

{

DateTime firstDay = DateTime.Parse(selectedDay.Year.ToString() + “-01-01″);

Console.WriteLine(“First of this year: ” + firstDay.ToShortDateString());

return firstDay;

}

Ngày cuối cùng của năm (Lưu ý năm nhuận)

//ngày cuối cùng của năm hiện tại

static public DateTime LastDayOfYear()

{

return LastDayOfYear(DateTime.Today);

}

// ngày cuối cùng của năm bất kì

static public DateTime LastDayOfYear(DateTime selectedDay)

{

//đầu tiên tìm ra ngày đầu tiên của năm kế tiếp

DateTime firstNextYear = DateTime.Parse(

(selectedDay.Year + 1).ToString() + “-01-01″);

DateTime lastDay = firstNextYear.AddDays(-1);

Console.WriteLine(“Last of this year: ” + lastDay.ToShortDateString());

return lastDay;

}

Một số chú ý

DateTime.Parse
Chuyển đối từ kiểu string sang kiểu DateTime. Trong ví dụ trên tôi thêm vào xâu năm hiện tại xâu “-01-01″ thì đó sẽ là ngày đâu tiên của năm hiện tại. Điều này hiển nhiên đúng.

Overloaded methods
Chúng ta có sử dụng các hàm nạp chồng trong ví dụ trên. Các bạn nhớ lại lý thuyết về nạp chồng phương thức. Đó là các phương thức có cùng tên nhưng khác đối số truyền vào.

ToShortDateString
Hàm này giúp bạn hiển thị kết quả về ngày mà không chứa giờ.





Send mail trong ASP.NET sử dụng C#

21 10 2009

Class dùng để gửi mail tới 1 hay nhiều người, có cho phép đính kèm tệp tin vào email…

Việc gửi mail là 1 công việc thường ngày và viết ra 1 chương trình gửi mail thật đơn giản nhưng không phải ai cũng biết. Mình xin giới thiệu với các bạn class Email này.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

namespace EmailClass
{
public class Email
{
public string Send_Email(string SendFrom,string SendTo, string Subject, string Body)
{
try
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@”\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*”);

bool result = regex.IsMatch(to);
if (result == false)
{
return “Địa chỉ email không hợp lệ.”;
}
else
{
System.Net.Mail.SmtpClient smtp = new SmtpClient();
System.Net.Mail.MailMessage msg = new MailMessage(SendFrom,SendTo,Subject,Body);
msg.IsBodyHtml = true;
smtp.Host = “smtp.gmail.com”;//Sử dụng SMTP của gmail
smtp.Send(msg);
return “Email đã được gửi đến: ” + SendTo + “.”;
}
}
catch
{
return “”;
}
}

public string Send_Email_With_Attachment(string SendTo, string SendFrom, string Subject, string Body, string AttachmentPath)
{
try
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@”\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*”);

string from = SendFrom;
string to = SendTo;
string subject = Subject;
string body = Body;

bool result = regex.IsMatch(to);

if (result == false)
{
return “Địa chỉ email không hợp lệ.”;
}
else
{
try
{
MailMessage em = new MailMessage(from, to,subject, body);
Attachment attach = new Attachment(AttachmentPath);

em.Attachments.Add(attach);
em.Bcc.Add(from);
System.Net.Mail.SmtpClient smtp = new SmtpClient();
smtp.Host = “smtp.gmail.com”;//Ví dụ xử dụng SMTP của gmail
smtp.Send(em);
return “”;
}
catch (Exception ex)
{
return ex.Message;
}
}
}

catch (Exception ex)
{
return ex.Message;
}
}

public string Send_Email_With_BCC_Attachment(string SendTo, string SendBCC, string SendFrom, string Subject, string Body, string AttachmentPath)
{
try
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@”\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*”);
string from = SendFrom;
string to = SendTo; //Danh sách email được ngăn cách nhau bởi dấu “;”
string subject = Subject;
string body = Body;
string bcc = SendBCC;

bool result = true;
String[] ALL_EMAILS = to.Split(‘;’);

foreach (string emailaddress in ALL_EMAILS)
{
result = regex.IsMatch(emailaddress);
if (result == false)
{
return “Địa chỉ email không hợp lệ.”;
}
}

if (result == true)
{
try
{
MailMessage em = new MailMessage(from, to, subject, body);
Attachment attach = new Attachment(AttachmentPath);
em.Attachments.Add(attach);
em.Bcc.Add(bcc);

System.Net.Mail.SmtpClient smtp = new SmtpClient();
smtp.Host = “smtp.gmail.com”;//Ví dụ xử dụng SMTP của gmail
smtp.Send(em);

return “”;
}
catch (Exception ex)
{
return ex.Message;
}
}
else
{
return “”;
}
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}





Phím tắt trong Visual Studio.Net (Phần 4)

21 10 2009

Bài này giới thiệu với các bạn phím tắt khi làm việc với trình gỡ lỗi. Hi vọng sẽ làm công việc của các bạn thuận tiện hơn.

Chức năng

Phím tắt.

Hiển thì tài liệu tham khảo cho cửa sổ đang hoạt động

F1

Hiển thị Menu hệ thống cho cửa sổ ứng dụng

ALT+SPACEBAR

Thêm hoặc remove điểm ngắt cho dòng hiện thời

F9

Xóa điểm ngắt.

CTRL+SHIFT+F9

Vô hiệu hóa điểm ngắt

CTRL+F9

Hiển thị cửa sổ Auto và đưa con trỏ tới đó

CTRL+ALT+A

Hiển thị cửa sổ điểm ngắt

CTRL+B

Hiển thị cửa sổ Call Stack và di chuyển con trỏ tới đó

CTRL+ALT+C

Hiển thị và đưa con trỏ đến Immediate window.

CTRL+ALT+I

Hiển thị và đưa con trỏ đến cửa sổ Locals

CTRL+ALT+L

Hiển thị và đưa con trỏ đến cửa sổ cửa sổ Running Document

CTRL+ALT+R

Hiển thị câu lệnh tiếp theo

ALT+* on the NUM pad

Hiện menu Shortcut

SHIFT+F10

Hiển thị và đưa con trỏ tới cửa sổ Threads

CTRL+ALT+H

Hiển thị và đưa con trỏ đến cửa sổ Watch

CTRL+ALT+W

Dừng gỡ lỗi

SHIFT+F5

Xử lý lỗi từng bước một theo từng câu lệnh phụ thuộc vào lời gọi hàm(Step Into).

F11

Không phụ thuộc vào lời gọi hàm (Step Over).

F10

Xử lý nốt các câu lệnh của một hàm và cho ra kết quả (Step Out)

SHIFT+F11

Khởi động lại trình gỡ lỗi

CTRL+SHIFT+F5

Xử lý code từ chỗ con trỏ

CTRL+F10

Gỡ lỗi chương trình

F5

Chạy không gỡ lỗi

CTRL+F5

Thiết lập lại câu lệnh tiếp theo.

CTRL+SHIFT+F10

Dừng thi hành

CTRL+BREAK





Phím tắt trong Visual Studio.Net (Phần 5)

21 10 2009

Điều hướng

Chức năng

Phím tắt

Di chuyển sang bên trái một kí tự

Phím mũi tên bên trái

Di chuyển sang bên phải một kí tự

Phím mũi tên phải

Di chuyển sang bên trái một từ

Ctrl + mũi tên trái

Di chuyển sang bên phải một từ

Ctrl + mũi tên phải

Di chuyển về đầu dòng

HOME

Chi chuyển về cuối dòng.

END

Di chuyển lên dòng trên

Phím mũi tên lên trên

Di chuyển xuống dòng dưới

Phím mũi tên xuống dưới

Di chuyển lên theo từng dòng

CTRL+Phím mũi tên lên

Di chuyển xuống từng dòng

CTRL+Phím mũi tên xuống dưới

Đưa con trỏ về đầu trang

PAGE UP

Đưa con trỏ về cuối trang

PAGE DOWN

Đưa con trỏ về ví trí đầu tiên của trang

CTRL+HOME

Đưa con trỏ tới vị trí cuối cùng của trang.

CTRL+END

Hiển thị hộp GoTo line để di chuyển đến một dòng cụ thể

CTRL+G*

Tìm phần còn lại của cặp dấu “{}”

CTRL+]

Tạo hoặc xóa bookmark

CTRL + KK

Đến bookmark tiếp theo

CTRL + KN

Đến bookmark trước đó

CTRL + KP

Xóa hết các bookmarks

CTRL + KL

Lựa chọn

To

Press

Mở rộng vùng chọn thêm một kí tự bên trái.

SHIFT+Mũi tên trái

Mở rộng vùng chọn thêm một kí tự bên phải

SHIFT+Mũi tên phải

Mở rộng vùng chọn thêm một từ bên trái.

CTRL+SHIFT+Mũi tên trái

Mở rộng vùng chọn thêm một từ bên phải

CTRL+SHIFT+Mũi tên phải

Mở rộng vùng chọn từ vị trí con trỏ đến đầu dòng.

SHIFT+HOME

Mở rộng vùng chọn từ vị trí con trỏ đến cuối dòng.

SHIFT+END

Mở rộng vùng chọn thêm một dòng phía trên

SHIFT+Mũi tên bên trên

Mở rộng vùng chọn thêm một dòng phía dưới

SHIFT+Mũi tên xuống dưới

Mở rộng vùng chọn đến đầu trang

SHIFT+PAGE UP

Mở rộng vùng chọn đến cuối trang

SHIFT+PAGE DOWN

Mở rộng vùng chọn đến vị trí đầu tiên của trang

CTRL+SHIFT+HOME

Mở rộng vùng chọn đến vị trí cuối cùng của trang

CTRL+SHIFT+END

Mở rộng vùng chọn nằm trong cặp {}

CTRL+SHIFT+]

Chọn từ hiện hành tại vị trí con trỏ.

CTRL+W

Chọn toàn bộ trang

CTRL+A

Chuyển từ chế độ xem dọc sang xem ngang.

CTR+RS

Hiệu chỉnh

Chức năng

Phím tắt

Chuyển sang hoặc bỏ chế độ INSERT

INSERT

Xóa vùng chọn hoặc nếu không có vùng chọn thì chèn them một kí tự trắng vào bên trái.

BACKSPACE

Xóa vùng chọng mà không lưu nội dung vào Clipboard.

DELETE

Cut dòng hiện hành vào Clipbord.

CTRL+M

Xóa dòng hiện hành mà không lưu vào clipboard

CTRL+SHIFT+M

Xóa từ bên phải con trỏ

CTRL+DELETE

Xóa từ bên trái con trỏ

CTRL+BACKSPACE

Cut phần văn bản được chọn lưu vào clipboard

CTRL+X hoặc SHIFT+DELETE

Copy phần văn bản được chọn vào Clipboard

CTRL+C hoặc CTRL+INS

Chèn phần văn bản đã lưu trong clipboard vào trang tại vị trí con trỏ.

CTRL+V hoặc SHIFT+INSERT

Đổi chỗ 2 kí tự quanh con trỏ ví dụ AC|BD thành AB|CD

CTRL+T

Đổi chỗ vị trí của 2 từ sau hoặc trước hoặc được nối với nhau bởi một toán tử.

CTRL+SHIFT+T

Đổi chỗ 2 dòng

ALT+SHIFT+T

Chuyển phần văn bản được chọn về chữ thường.

CTRL+U

Chuyển phần văn bản được chọn về chữ hoa.

CTRL+SHIFT+U

Quay trở về hiệu chỉnh cuối cùng tại dòng hiện thời

CTRL+Z or ALT+BACKSPACE

Phục hồi lại trạng thái vừa xong

CTRL+Y or ALT+SHIFT+BACKSPACE

Hiện hoặc ẩn kí tự trắng.

CTRL+ RW

Thay dấu cách bởi tabs trong phần văn bản được chọn

CTRL+Q*

Thay tabs bằng dấu cách trong phần văn bản được lựa chọn

CTRL+SHIFT+Q

Dịch chuyển con trỏ về bên phải thêm một khoảng tab

TAB

Dịch chuyển con trỏ về bên trái thêm một khoảng tab

SHIFT+TAB





Phím tắt trong Visual Studio.Net (Phần 3)

21 10 2009

Thao tác với các cửa sổ soạn thảo

Tác dụng

Phím tắt

Đóng ứng dụng đang mở; nếu tất cả các cửa sổ đã đóng rùi thì sẽ đóng luôn cả môi trường làm việc.

ALT+F4

Copy vùng chọn vào Clipboard.

CTRL+C or CTRL+INS

Cut vùng chọn và copy vào Clipboard

CTRL+X or SHIFT+DELETE

Hiển thị cửa sổ menu hệ thống cho ứng dụng.

ALT+SPACEBAR

Hiển thị tài liệu tham khảo.

F1

Hiển thị Document Outline window và đưa con trỏ đến đó.

CTRL+ALT+T

Hiển thị Object Browser và đưa con trỏ đến đó dù đang ở đâu đi nữa

CTRL+ALT+B

Hiển thị cửa sở Output và di chuyển con trỏ đến đó

CTRL+ALT+O

Hiển thị menu Shortcut

SHIFT+F10

Đến cuối cửa sổ hiện hành.

CTRL+PAGE DOWN

Đến đầu cửa sổ hiện hành.

CTRL+PAGE UP

Chèn thêm 2 dòng trắng.

CTRL+ENTER+ ENTER

Chèn nội dụng trong Clipboard vào vị trí con trỏ

CTRL+V or SHIFT+INSERT

Di chuyển giữa các công cụ lập trình như : solution explorer, toolbox

ALT+F6

Đưa con trỏ xuống cuối cửa sổ

CTRL+END

Đưa con trỏ lên đầu cửa sổ

CTRL+HOME





Phím tắt trong Visual Studio.Net (Phần 2)

21 10 2009

Thao tác với hộp tìm kiếm Chào các bạn tiếp theo loạt bài về phím tắt trong Visual Studio.Net, hôm nay tôi sẽ giới thiệu một số phím dùng khi bạn tìm kiếm văn bản

Chức năng

Phím tắt

Đóng cửa sổ tìm kiếm và chuyển sang cửa sổ soạn thảo

ESC

Hiển thị trang tài liệu cho cửa sổ tìm kiếm.

F1

Hiển thị Cửa sổ tìm kiếm nơi bạn có thể đánh văn bản cần tìm

CTRL+H

Hiển thị cửa sổ tìm kiến với từ dưới con trỏ trong hộp tìm kiếm.

CTRL+F

Hiển thị cửa menu shortcut.

SHIFT+F10

Tìm kiếm vị trí tiếp theo chứa từ bạn đang cần trong cửa sổ tìm kiếm

F3

Tìm ví trí của văn bản cần tìm trước vị trí hiện tại.

SHIFT+F3

Đưa con trỏ vào hộp tìm kiếm trên Standard toolbar

CTRL+SHIFT+F





Phím tắt trong Visual Studio .Net (Phần 1)

21 10 2009

Làm việc với một môi trường lập trình chuyên nghiệp như .Net bạn cũng cần phải chuyên nghiệp hóa bản thân. Phím tắt là một công cụ rất hữu dụng làm tăng tốc độ coding của bạn. Bài viết này tôi xin giới thiệu với các bạn một số tổ hợp phím tắt hay được dùng trong Visual Studio.Net Dưới đây là bảng chi tiết về các phím tắt dùng để thao tác với văn bản khi bạn làm việc với Visual Studio. Net. Hi vọng nó có ích cho công việc của bạn. Chúc bạn học tốt.

Tên chức năng

Phím tắt

Giải thích

Edit.BreakLine

ENTER

Chèn một dòng mới

Edit.CharTranspose

CTRL + T

Đổi vị trí của các kí tự bên phải & bên trái của con trỏ với nhau. Ví dụ: AC|BD becomes AB|CD. Chỉ có hiệu lực trong chế độ văn bản.

Edit.CollapseTag

CTRL + M, CTRL + T

Ẩn thẻ HTML & hiển thị đoạn mã HTML đã bị thu gọn

(. . .). Bạn có thể xem toàn bộ mã đã được thu gọn khi đặt con trỏ lên các dấu …

Edit.CollapseToDefinitions

CTRL + M, CTRL + O

Tự động ẩn hoặc hiện code của một “khu vực” một hàm, một lớp …

Edit.CommentSelection

CTRL + E, CTRL + C

Tạo chú thích đầu dòng theo cú pháp của ngôn ngữ lập trình đang dùng.

Edit.CompleteWord

CTRL + K, CTRL + W

Hiển thị phần từ còn thiếu của từ bạn định viết. Ví dụ bạn viết co thì có thể là const hoặc continue.

Edit.CopyParameterTip

CTRL + SHIFT + ALT + C

Copy phần thông tin của tham số vào clipboard

Edit.DeleteBackwards

BACKSPACE

Xóa một kí tự bên trái con trỏ.

Edit.DeleteHorizontalWhitespace

CTRL + E, CTRL + \

Thu hẹp khoảng trắng trong vùng chọn hoặc xóa khoảng trắng gần con trỏ nếu không có vùng chọn.

Edit.InsertTab

TAB

Chèn thêm một khoảng trắng.

Edit.InsertSnippet

CTRL + K, CTRL + X

Chèn thêm Snippet.

Edit.LineCut

CTRL + L

Lưu dòng được lựa chọn vào bộ nhớ đệm.

Edit.LineDelete

CTRL + SHIFT + L

Xóa tất cả các dòng đang được lựa chọn hoặc dòng hiện tại.

Edit.LineOpenAbove

CTRL + ENTER

Chèn một dòng trắng phía trên con trỏ.

Edit.LineOpenBelow

CTRL + SHIFT + ENTER

Chèn một dòng trắng phía dưới con trỏ.

Edit.LineTranspose

SHIFT + ALT + T

Đổi chỗ dòng chứa con trỏ và dòng dưới nó.

Edit.ListMembers

CTRL + J

Hiển thị danh sách các member của class hiện thời cho viện hoàn thành câu lệnh khi sửa mã lệnh.

Edit.MakeLowercase

CTRL + U

Thay đổi văn bản được lựa chọn thành chữ thường.

Edit.MakeUppercase

CTRL + SHIFT + U

Thay đổi văn bản được lựa chọn thành chữ HOA.

Edit.ParameterInfo

CTRL + SHIFT + SPACEBAR

Hiển thị Tooltip chứa các thông tin về tham số hiện thời. Chỉ có tác dụng trong cửa sổ Code (Source)

Edit.PasteParameterTip

CTRL + SHIFT + ALT + P

Dán thông tin của tham số từ “trình cảm ứng” thông minh ra vị trí con trỏ

Edit.StopHidingCurrent

CTRL + M, CTRL + U

Xóa bỏ các chú thích trong vùng được lựa chọn.

Edit.StopOutlining

CTRL + M, CTRL + P

Xóa bỏ các chú thích trong toàn bộ tài liệu.

Edit.TabLeft

SHIFT + TAB

Di chuyển về bên trái một khoảng trắng.

Edit.ToggleAllOutlining

CTRL + M, CTRL + L

Gom các dòng lại.

Edit.ToggleTaskListShortcut

CTRL + E, CTRL + T

Thiết lập hoặc tạo shortcut trên dòng hiện thời.

Edit.ToggleWordWrap

CTRL +E, CTRL + W

Thu gọn hoặc mở rộng văn bản trong chế độ văn bản.

Edit.UncommentSelection

CTRL + E, CTRL + U

Xóa các comment từ dòng code hiện thời.

Edit.WordDeleteToEnd

CTRL + DELETE

Xóa một từ ở bên phải con trỏ.

Edit.WordDeleteToStart

CTRL + BACKSPACE

Xóa một từ bên trái con trỏ.

Edit.WordTranspose

CTRL + SHIFT + T

Đảo 2 từ đứng sau con trỏ. Ví dụ:|End Sub thành Sub End|.





ViewState trong ASP.Net

21 10 2009

Sử dụng Session và ViewState là một kĩ năng quan trọng trong việc lập trình với ASP.Net. Bài viết này sẽ giúp các bạn hiểu về ViewState. Tôi sẽ lần lượt gửi tới các bạn các kiến thức cao hơn về ViewState.

ViewState là một kĩ thuật giúp bạn để giữ lại trạng thái của trang mặc dù trang được Postbacks.Thường thì khi một trang được postback thì mọi giá trị trên trang sẽ không được giữ lại. Để giữ lại giá trị trên trang thì bạn phải sử dụng ViewState để lưu lại giá trị đó. Các giá trị lưu trong ViewState sẽ được lần lượt lưu trữ và gửi tới client browser theo giá trị của một hidden form input. Khi bạn xem source (Trên trình duyệt của mình) của một trang sử dụng ViewState, bạn sẽ thấy hidden viewstate input được khai báo có dạng như sau:

Trường hidden sẽ chứa các giá trị viewstate cho tất cả các controls trên trang. Đây là một phần quan trọng của viewstate mà bạn cần nắm vững.

ViewState theo mặc định là sẽ được gửi tới client browser sau đó sẽ trở lại server trên form của một hidden input control trên trang của bạn, Việc lưu trữ một lượng lớn dữ liệu trong viewsate có thể làm tăng kích cỡ trang web của bạn, và có thể có ảnh hưởng đến việc thực thi nó nữa.

Để Disable ViewState cho một contral, bạn chỉ cần thiết lập thuộc tính EnableViewState là false. Khi ViewState được diasbled cho một control, nó sẽ tự động disabled cho các controls khác là con của control này.

Example:

Ví dụ:

Điều này không có nghĩa là bạn nên tránh sử dụng viewstate mà để bạn có thể kiểm soát dữ liệu được lưu và sự ảnh hưởng của nó tới toàn trang.

ViewState có ưu điểm và cũng có nhược điểm. Nhưng bạn hoàn toàn có thể kiểm soát được nó.

Một cách đơn giản để lưu trũ dữ liệu nhỏ vào Viewstate là sử dụng các thuộc tính thay cho biến thành viên. Thuộc tính này có thể sử dụng viewstate để lưu giá trị hơn là việc bạn sử dụng biến thành viên sẽ bị mất giá trị sau một lần postback. Ví dụ lưu trữ một giá trị Integer vào ViewState có thể được làm như sau:

VB

Public Property SomeInteger() As Integer

Get

Dim o As Object = ViewState(“SomeInteger”)

If Not o Is Nothing Then Return DirectCast(o, Integer)

Return 0 ‘a default

End Get

Set(ByVal value As Integer)

ViewState(“SomeInteger”) = value

End Set

End Property

C#

public int SomeInteger {

get {

object o = ViewState["SomeInteger"];

if (!o == null) return (int)o;

return 0;

//a default

}

set { ViewState["SomeInteger"] = value; }

}








Follow

Get every new post delivered to your Inbox.