Thứ bảy, ngày 3 tháng 12 năm 2016

Tổng hợp các thủ thuật lập trình asp.net P3

Ngày đăng: 27/4/2011, 16:4:24AM | Lượt xem: 5,334
Hot!

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 ; 
Xem thêm Cấu hình và sử dụng bộ soạn thảo FCKEditor

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. Bạn hãy copy file 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

Xem thêm Hướng dẫn sử dụng và cấu hình FreeTextbox

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

Còn tiếp (Phần 4)

hmweb
 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.