Twitter Delicious Facebook Digg Stumbleupon Favorites More

Thứ Tư

Tổng Hợp Các Thủ Thuật Lập Trình Asp.Net – Phần 3


Trong 2 phần trước tôi đã tổng hợp 20 thủ thuật  (mỗi phần 10 thủ thuật)  lập trình với asp.net. Trong phần tiếp theo này tôi sẽ tiếp tục tổng hợp 10 thủ thuật nữa để các bạn tham khảo.
21: Hiển thị chính xác nội dung văn bản TextArea
Khi bạn nhập nội dung văn bản trong TextArea thường mất các ký tự khoảng trắng hoặc ký tự xuống dòng. Nếu bạn muốn giữ đúng định dạng đã nhập trong TextArea bạn thực hiện thay thế các ký tự đó như ví dụ
Label1.Text = TextBox1.Text.Replace("\n", "<br />").Replace(" ", "&nbsp;");
22. Sử dụng ViewState đúng chỗ
Khi lập trình web với asp.net sử  dụng các control, khi bạn view source sẽ thấy như minh họa
<input type="hidden" name="__EVENTVALIDATION"
id="__EVENTVALIDATION" value="/wEWAgKK7LjKBwKM54rGBgzCWqbCIzq33uVXHF19FzfdGPsJ" />
Nếu bạn sử dụng càng nhiều control thì value càng lớn. điều này sẽ làm ảnh hưởng đến tốc độ, băng thông cũng như các cỗ máy tìm kiếm (Các máy tìm kiếm tìm kiếm tốt nhất cho khoảng 20KB source đầu tiên trên trang của bạn, quá số này thường sẽ bị bỏ qua – Tham khảo ASP.NET SEO around VIEWSTATE). Vì vậy nếu là lập trình website bạn nên bỏ ViewState bằng cách
Trong web.config
<pages enableViewStateMac='false'/>
Hoặc trong từng trang:
<%@ Master Language="C#" EnableViewState ="false"
Hoặc với từng control bạn cũng có thể bỏ ViewState
<asp:Button ID="BT1" EnableViewState="false" runat="server" />
Nhưng bạn chú ý 1 điều là khi bạn bỏ ViewState thì các sự kiện postback sẽ không có đúng hiệu lực của nó, chính vì vậy bạn cân nhắc ở trang nào nên dùng ViewState, trang nào không nên dùng ViewState.
23. Cách dùng khác của mệnh đề if … else
Thông thường hoặc theo thói quen bạn hay dùng mệnh đề if … else như sau:
private string abc(int gio)
{
    string str = "";
    if (gio < 12)
    {
        str = "Chào buổi sáng";
    }
    else
    {
        str = "Chào buổi chiều";
    }
    return str;
}
Với dạng if … else đơn giản bạn có thể dùng theo cấu trúc khác như sau (dễ và gọn hơn nhiều)
private string abc(int gio)
{
    string str = "";
    str = (gio < 12) ? "Chào buổi sáng" : "Chào buổi chiều";
    return str;
}
24. Xóa hết các thẻ html của nội dung
Khi trình bày dữ liệu nhất là khi bạn copy dữ liệu từ trang khác, thường là sẽ có các style sheet của trang bạn copy về. Khi trình bày dữ liệu nhất là sử dụng Tooltip bạn sẽ bị lỗi không hiển thị được (Đây cũng là vấn đề nhiều bạn hỏi khi thực hiện theo bài Hướng dần thực hiện tooltip). Để xóa hết html của một chuỗi bạn dùng hàm sau:
private string RemoveHTMLTag(string HTML)
{
    // Xóa các thẻ html
    System.Text.RegularExpressions.Regex objRegEx = new System.Text.RegularExpressions.Regex("<[^>]*>");

    return objRegEx.Replace(HTML, "");
}
25. Dùng hàm Split với tham số là một chuỗi:
Bình thường bạn sử dụng hàm Split để chuyển chuỗi thành mảng với 1 ký tự xuất hiện trong chuỗi, với hàm Split tham số truyền vào là char nên bạn chỉ chuyên được 1 lý tự. Nếu bạn dùng hàm Split với tham số là 1 chuỗi bạn dùng như ví dụ sau:
string strHTML = "<p>Bài 1</p><p>Bài 2</p><p>Bài 3</p><p>Bài 4</p>";
string[] strSplit = Regex.Split(strHTML, "</p>");
Ở ví dụ này ta dung Regex.Split của lớp System.Text.RegularExpressions – tôi tạo ra mảng strSplit để lấy các phần tử là các thẻ <p> và nội dung của nó. Điều này khi bạn không sử dụng Regex.Split sẽ không thực hiện được
26. Lấy nội dung của một thẻ html
Giả sử bạn có một chuỗi gồm nhiều đoạn được đặt trong các thẻ html (thẻ <p> chẳng hạn), bạn muốn lấy nội dung của một thẻ <p> trong chuỗi đó. bạn dùng hàm như cí dụ sau:
static string GetParagraphOfHTMLTag(string strHTML)
{
    Match m = Regex.Match(strHTML, @"<p> \s*(.+?)\s*</p>");
    if (m.Success)
    {
        return m.Groups[1].Value;
    }
    else
    {
        return "";
    }
}
Trong hàm trên bạn thay chỉ số 1 bằng chỉ số thứ tự thẻ html bạn muốn lấy
Ví dụ:
string strHTML = "<p>Bài 1</p><p>Bài 2</p><p>Bài 3</p><p>Bài 4</p>";
string s1 = GetParagraphOfHTMLTag(strHTML);
Khi đó s1 của bạn sẽ là Bài 1
27. Khắc phụ lỗi font khi viewsource khi dùng FCKEditor
Nếu bạn không để ý config cho FCKEditor thì khi lưu lại dữ liệu trong CSDL sẽ lưu tiếng Việt dưới dạng Encode, trong text sẽ có các ký tự như sau:
< =”Microsoft FrontPage 5.0″ name=GENERATOR> < =FrontPage.Editor. name=ProgId>  Kh&ocirc;ng cần chạy đ&ocirc;n chạy đ&aacute;o khắp
các trung t&acirc;m để mong t&igrave;m được một c&ocirc;ng
việc l&agrave;m th&ecirc;m tăng thu nhập, chẳng cần phải gật
đầu với những c&ocirc;ng việc nằm ngo&agrave;i v&ugrave;ng
Mặc dù đoạn text này vẫn được trình duyệt hiển thị đúng nhưng trong html code bị như thế, nhìn không thích một chút nào cả hơn nữa có thể gây ra dư thừa dữ liệu hoặc tìm kiếm tiếng Việt không chính xác. Để khắc phục hiện tượng này bạn thêm vào file config dòng sau (vào file fckconfig.js):
FCKConfig.ProcessHTMLEntities = false ;
28. Sử dụng ImageGallery của FreeTextbox để quản lý và chèn ảnh vào bài viết
Khi sử dụng FreeTextbox . Nếu không config thì bạn không có trình quản lý Image với chức năng upload và chèn ảnh vào nội dung bài viết. Với FreeTextBox cũng đã hỗ trợ bạn đủ công cụ để quản lý và chọn ảnh vào bài viết. Khi download thư viện này về tại http://freetextbox.com/download/ trong thư mục giải nén có file ftb.imagegallery.aspx và thư mục aspnet_client. Bạn hãy copy file và thư mục này vào thư mục web của bạn. Sau đó trong code bạn dùng như sau:
<FTB:FreeTextBox ID="ftbContent" runat="server" Height="120px"
 ImageGalleryUrl="../ftb.imagegallery.aspx?rif=/imagespath/&cif=~/uploads/image/"
 Width="100%" ToolbarLayout=" ParagraphMenu,FontFacesMenu,FontSizesMenu,FontForeColorsMenu|Bold,Italic,Underline,Strikethrough;Superscript,Subscript,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,InsertImage,InsertRule|Cut,Copy,Paste;Undo,Redo,Print, InsertImageFromGallery,Preview,SelectAll,WordClean,NetSpell">
</FTB:FreeTextBox>
Với code ví dụ trên tất cả ảnh sẽ được quản lý và lưu vào thư mục uploads/image/ trong web của bạn. Khi viết bài bạn có thể tạo các thư mục con và hiển thị các hình ảnh dạng ImageGallery rất dễ quản lý và tiện không kém FCKEditor
29: Viết comment cho các hàm
Khi sử dụng VS để viết code bạn thấy VS hỗ trợ viết code và list ra các hàm, phương thức tương ứng và khi bạn chọn một phương thức nào đó sẽ có comment về các tham số, kiểu dữ liệu, giá trị trả về, …
Khi bạn viết hàm bạn cũng có thể tạo comment như vậy bằng cách bạn đưa con nháy lên phía trên của hàm đang viết và gõ 3 dấu /// khi đó VS sẽ tự tạo các commnet và bạn ghi các comment của bạn vào và khi dùng nó cũng sẽ hiển thị comment như trên.
Ví dụ:
/// <summary>
/// Xóa một file được chọn
/// </summary>
/// <param name="fileName">file cần xóa</param>
public void DeleteFile(string fileName)
{
    try
    {
        FileInfo fi;
        if (System.IO.File.Exists(fileName) == true)
        {
            fi = new FileInfo(fileName);
            fi.Delete();
        }
    }
    catch (Exception ex) { ex.Message.ToString(); }
}
30. Đọc nôi dung của một trang web
Bạn cần đọc nội dung của một trang nào đó để bóc tách dữ liệu bạn dùng hàm sau để đọc nội dung.
/// <summary>
/// Đọc nội dung trang bất kỳ
/// </summary>
/// <param name="Address">Địa chỉ trang</param>
/// <returns>string</returns>
public string GetWebContent(string Address)
{
    string txOutput = "";
    try
    {
        if (Address != "")
        {
            System.Net.WebClient MyClient = new System.Net.WebClient();
            System.IO.Stream MyStream = MyClient.OpenRead(Address);
            System.IO.StreamReader MyStreamReader = new System.IO.StreamReader(MyStream);
            string NewLine;
            while ((NewLine = MyStreamReader.ReadLine()) != null)
            {
                txOutput += NewLine + "\r\n";
            }
        }
    }
    catch { }
    return txOutput;
}
Kết quả hàm này trả về là chuỗi html như khi bạn chọn viewsource của trang bạn muốn đọc

0 nhận xét:

Đăng nhận xét

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates