RSSAsp.net MVC

ASP.NET MVC 3 – Tạo Custom Html Helper (Razor)

HtmlHelper là một lớp hỗ trợ việc tạo các thành phần (thẻ) html với Razor Engine. Mặc dù lớp này cung cấp rất nhiều các thành phần nhưng vẫn chưa đáp ứng được yêu cầu cụ thể cho từng dự án. Khi đó, bạn có thể tạo ra thêm các phương thức Html Helper mới để sử dụng nhờ vào kĩ thuật Extension Method.

khelpcenter iconHtmlHelper là một lớp hỗ trợ việc tạo các thành phần (thẻ) html với Razor Engine. Mặc dù lớp này cung cấp rất nhiều các thành phần nhưng vẫn chưa đáp ứng được yêu cầu cụ thể cho từng dự án. Khi đó, bạn có thể tạo ra thêm các phương thức Html Helper mới để sử dụng nhờ vào kĩ thuật Extension Method.

 

Trong bài viết này, tôi sẽ tạo một ví dụ cho phép thêm vào một thẻ

(một thẻ mới của Html5) thông qua cú pháp:

@Html.Details(summary, content, open)

- summary: chuỗi tiêu đề
- content: phần nội dung sẽ ẩn/hiện khi bạn click vào tiêu đề
- open: tham số boolean xác định phần content sẽ được ẩn/hiện theo mặc định (khi mới tải trang).

Minh họa:

Details Tag Html5

(a poem by Emily Bronte)

Bản chất của phương pháp này là tạo ra chuỗi Html trong một extension method và trả về dưới dạng một IHtmlString. Loại helper này là “code based” do được viết hoàn toàn bằng  C# (hoặc VB) để tạo ra nội dung Html cần thiết.

Để thực hiện, bạn tạo một dự án ASP.NET MVC mới và thêm một lớp dùng để chứa các extension sẽ được tạo ra. Sau đó, thêm vào phương thức Details sau. Tôi dùng StringBuilder để tối ưu các thao tác cộng chuỗi.

 

using System;
using System.Web;
using System.Web.Mvc;
using System.Text;

namespace MyHtmlHelpers
{
    public static class Helpers
    {
        public static IHtmlString Details(this HtmlHelper helper,
            string summary,
            string content,
            bool open = false)
        {
            StringBuilder str = new StringBuilder("
"); str.Append("").Append(summary).AppendLine(""); str.AppendLine(content); str.AppendLine("
"); return new MvcHtmlString(str.ToString()); // or // return helper.Raw(str.ToString()); } } }

 

Tiếp tục, bạn cần thêm namespace MyHtmlHelpers vào tập tin Views/Web.config để có thể sử dụng được các lớp trong namespace này trong view.

 

...

  
    
    
    
    
    
  

...

 

Trong tập tin view bất kì (có đuôi .cshtml với ngôn ngữ C#), bạn có thể sử dụng Html Helper vừa tạo như sau:

 

@Html.Details("Love and Friendship", @"Love is like the wild rose-briar,
Friendship like the holly-tree
The holly is dark when the rose-briar blooms
But which will bloom most constantly?")

 

Nó sẽ tạo ra đoạn html sau khi hiển thị trên trình duyệt:

 

Love and Friendship Love is like the wild rose-briar,
Friendship like the holly-tree
The holly is dark when the rose-briar blooms
But which will bloom most constantly?

 

YinYangIt’s Blog

Tags:

Nếu bạn thấy bài viết hữu ích, hãy nhấn +1 và các liên kết chia sẻ để website ngày càng phát triển hơn. Xin cám ơn bạn!

Nếu là khách, bạn phải đăng ký tài khoản và kích hoạt tài khoản để bình luận được hiển thị ở đây.
Thông tin kích hoạt gửi đến mail của bạn.

Tin mới hơn

Tin cũ hơn

Lên trên đầu