Những thủ thuật nên biết cho lập trình ASP.NET

Sau đây là một số thủ thuật trong lập trình ASP.NET có thể giúp bạn giải quyết công việc nhanh hơn.

ASP.NET được phát triển bởi Microsoft nhằm mang lại cho các nhà phát triển một công cụ lập trình kịch bản để tạo ra các Website và ứng dụng trên nền tảng Web. Ngôn ngữ này là sự phát triển dựa trên nền tảng thành công của người “tiền nhiệm” ASP. Bạn có thể lập trình ASP.NET dựa trên bất kỳ ngôn ngữ .NET nào.

1. Kiểm tra FileUpload chỉ có thể là file ảnh

Để tải lên hình ảnh đến máy chủ từ một ứng dụng web Asp.Net, Bạn sử dụng FileUpload. Nhưng bạn chỉ muốn giới hạn chỉ cho upload file ảnh thôi => Sử dụng RegularExpressionValidator như minh họa dưới đây

<asp:FileUpload ID="FileUpload1" runat="server" />

<asp:RegularExpressionValidator

          ID="RegularExpressionValidator1"

          runat="server"

          ControlToValidate="FileUpload1"

          ErrorMessage="Không phải file ảnh"

          ValidationExpression=

"^([0-9a-zA-Z_\-~ :\\])+(.jpg|.JPG|.jpeg|.JPEG|.bmp|.BMP|.gif|.GIF|.png|.PNG)$">

</asp:RegularExpressionValidator>

2. Tạo nhiều QueryString từ Hyperlink NavigateUrl trong GridView

Trong Gridview khi bạn muốn một trường nào đó là liên kết và bạn muốn truyền các QueryString hoặc Parameter để ở trang chuyển tiếp bạn có thể Request được các Parameter  này.

    - Nếu là trường được convert thành TemplateField bạn dùng như minh họa sau:

<asp:HyperLink ID="HyperLink1" runat="server" Text="View Data"

NavigateUrl='<%# String.Format("TestPage.aspx?param1={0}&param2={1}&param3={2}",

Eval("Field1"), Eval("Field2"), Eval("Field2")) %>'></asp:HyperLink>

    - Nếu là HyperLinkField

<asp:HyperLinkField

DataNavigateUrlFields="Field1,Field2,Field3"

DataNavigateUrlFormatString="TestPage.aspx?param1={0}&param2={1}&param3={2}"

Text="View Data" />

Hãy thay các  Field1, Field2, ... Thành các tên trường dữ liệu của bạn

3. Giới hạn chỉ nhập số  trong Textbox

Để giới hạn khi người dùng chỉ có thể nhập ký tự số (số chứng minh thư chẳng hạn) trong textbox bạn có thể dùng FilteredTextBoxExtender của AjaxControl toolkit như sau:

<asp:TextBox ID="txtCMT" Width="50px" runat="server" />

<cc1:FilteredTextBoxExtender ID="ftbeCMT" runat="server"

    Enabled="True" FilterType="Numbers" TargetControlID="txtCMT" />

Nếu không dùng ajax bạn cần viết hàm javascript như sau:

function onlyNumbers(evt) {

    var e = event || evt;

    var charCode = e.which || e.keyCode;

    if (charCode > 31 && (charCode < 48 || charCode > 57))

     return false;

    return true;

}

Trong Textbox bạn sửa lại thành:

<asp:TextBox ID="txtCMT" runat="server" onkeypress="return onlyNumbers();" />

4. Tính số ngày, tháng, năm giữa hai mốc thời gian

Tham khảo ví dụ sau

DateTime date1 = Convert.ToDateTime("2008/01/01");

DateTime date2 = Convert.ToDateTime("2010/12/31");

TimeSpan timespan = date2.Subtract(date1);

int intDays = timespan.Days;

double intMonths = Math.Floor(intDays / 30.0);

double intYears = Math.Floor(intDays / 365.0);

Response.Write("Số ngày : " + intDays.ToString());

Response.Write("Số tháng : " + intMonths.ToString());

Response.Write("Số năm : " + intYears.ToString());

5. Thêm điều kiểm xác nhận xóa/sửa trong gridview

Trong gridview nếu bạn muốn có thêm cột cho phép người dùng chọn bản ghi để xóa, Bạn có thể thêm cột và convert thành TemplateField và khi người dùng click chọn xóa bạn có yêu cầu xác nhận thao tác xóa này. Bạn xem minh họa sau

<asp:TemplateField HeaderText="Xóa">

    <ItemTemplate>

        <asp:LinkButton ID="lbtDelete" runat="server"

            OnClientClick="return confirm('Bạn có chắc chắn xóa không?')"

            onclick="lbtDelete_Click"><img

            src="Images/Xoa.jpg" border="0" /></asp:LinkButton>

    </ItemTemplate>

</asp:TemplateField>

6. Bắt sự kiện phím Enter

Giả sử bạn có Form tìm kiếm và bạn muốn khi nhập dữ liệu ở Textbox và nhấn phím Enter thì sự kiện onclick lên nút Button được thực hiện bạn viết hàm javascript như sau:

<script language="javascript">

 function doClick(buttonName, e) {

     var key;

     if (window.event)

         key = window.event.keyCode;     //IE

     else

         key = e.which;     //firefox

     if (key == 13) {

         var btn = document.getElementById(buttonName);

         if (btn != null) {

             btn.click();

             event.keyCode = 0

         }

     }

 }

</script>

Trong code C# bạn muốn khi bạn nhấn Enter tác dụng với control nào bạn dùng như ví dụ sau:

 txtTuKhoa.Attributes.Add("onKeyPress", "doClick('" + btnTim.ClientID + "',event)");

8. Thêm cột tự tăng trong Grid

Trong Gridview nếu bạn muốn có thêm cột số thứ tự bạn Add thêm TemplateField như sau vào Grid nhé

<asp:TemplateField HeaderText="STT">    

     <ItemTemplate>    

         <%# Container.DataItemIndex + 1 %>    

      </ItemTemplate>    

 </asp:TemplateField> 

9. Chuyển hướng sang trang khác sau khi click OK từ MessageBox

Giả sử bạn muốn alert một thông điệp nào đó và sau khi người dùng nhấn OK thì trang hiện hành được điều hướng sang trang khác. Bạn tham khảo code sau

string strScript = "<script>";

strScript += "alert('Thông điệp của bạn');";

strScript += "window.location='NextPage.aspx';";

strScript += "</script>";

Page.RegisterClientScriptBlock("strScript", strScript);

Một cách khác bạn có thể dùng

ScriptManager.RegisterStartupScript(

    this, this.GetType(), "alert",

    "alert('Thông điệp của bạn');location.href='NextPage.aspx';", true);

10. Đưa các thông tin tĩnh vào file xml

Khi làm website có những phần thông tin tĩnh rất ít khi thay đổi như ảnh banner, copy right, địa chỉ liên hệ, ... nếu các thông tin này bạn đưa luôn vào code aspx thì khi có sự thay đổi bạn lại phải sửa lại code, Nếu đưa vào Database thì ta sẽ sử dụng connect tới Database server nhiều. Vậy có cách khác là các thông tin này bạn đưa vào file xml và trong code bạn viết để hiển thị chúng. Khi có thay đổi ta cập nhật lại file xml là xong.

11. Tạo Ico cho địa chỉ website

Các trang web khi bạn truy cập hay có icon là biểu tượng của trang web đó, bạn sẽ thấy trên thanh address trước chữ http sẽ có biểu tượng của website. Để thực hiện bạn thêm mã html như sau vào trong thẻ head:

<link href="http://hmweb.com.vn/hmico.ico" rel="shortcut icon" type="image/x-icon" />

12. Hiệu ứng chuyển trang bằng thẻ meta

Khi người dùng đang xem trang web của bạn, họ chuyển qua trang web khác, bạn có thể dùng thẻ Mata như sau để tạo hiệu ứng chuyển trang như một lời chào thân thiện

 <meta http-equiv="Site-Exit" content="revealTrans(Duration=3.0,Transition=23)"/>

Hoặc khi họ mở liên kết trên cùng trang của bạn, bạn cũng có thể tạo hiệu ứng chuyển trang đơn giản bằng cách dùng thẻ meta như sau

<META http-equiv="Page-Exit" content="progid:DXImageTransform.Microsoft.GradientWipe(duration=.5)">

Hy vọng, với những thủ thuật trên bạn có thể áp dụng vào thực tế một cách nhanh hơn và đỡ nhàm chán hơn.

Nếu bạn muốn trở thành những lập trình viên chuyên nghiệp trên ngôn ngữ ASP.NET thì Stanford là lựa chọn số 1 sẽ giúp bạn thành công.

Hiện tại, hạn tuyển sinh lớp học lập trình ASP.NET for Developer sẽ đến hết ngày 04/03/2016 và từ nay tới đó, bạn có thể đăng ký để nhận các ưu đãi hấp dẫn.

Hãy đăng ký khóa học lập trình ASP.NET tại đây để có thêm những trải nghiệm thú vị nhé!

Sưu tầm và Tổng hợp

Nhật Lệ (Stanford - Nâng tầm tri thức)

Tags: