Markdown là gì
Markdown là một lightweight markup language với cú pháp văn bản thuần túy (plain text formatting syntax) được thiết kế để có thể chuyển đổi thành HTML và nhiều định dạng khác. Mục tiêu chính của Markdown là giúp mọi người "viết bằng định dạng văn bản thuần túy dễ đọc và dễ viết nhất có thể, đồng thời có thể tùy chọn chuyển đổi nó sang HTML một cách hợp lệ."
Lịch sử
Markdown được tạo ra bởi John Gruber vào năm 2004, với sự hỗ trợ của Aaron Swartz cho cú pháp ban đầu. John Gruber đã đặt mục tiêu tạo ra một ngôn ngữ mà người dùng có thể đọc được dưới dạng văn bản thuần túy mà không cần chuyển đổi, đồng thời cũng có thể chuyển đổi thành HTML. Điều này đã giúp Markdown nhanh chóng trở nên phổ biến trong giới blogger, nhà phát triển và những người muốn viết tài liệu một cách hiệu quả.
Kể từ đó, nhiều biến thể và phần mở rộng của Markdown đã xuất hiện, chẳng hạn như GitHub Flavored Markdown (GFM), CommonMark, làm cho nó ngày càng mạnh mẽ và linh hoạt hơn.
Ví dụ
Để sử dụng Markdown trong ứng dụng ASP.NET Core, chúng ta cần một thư viện hoặc công cụ để chuyển đổi cú pháp Markdown thành HTML. Một trong những thư viện phổ biến và mạnh mẽ nhất cho .NET là Markdig.
Bước 1: Cài đặt Markdig
dotnet add package MarkdigBước 2: Chuyển đổi Markdown sang HTML
Sau khi cài đặt, bạn có thể sử dụng Markdig.Markdown.ToHtml() để chuyển đổi một chuỗi Markdown thành chuỗi HTML.
using Markdig;
using MarkdigSample.Models;
using Microsoft.AspNetCore.Mvc;
namespace MarkdigSample.Controllers;
public class HomeController : Controller
{
public IActionResult MarkdownSample()
{
// Example markdown content
string markdownContent = @"# Hello, Markdig!
This is a sample markdown content rendered using Markdig.
# h1 Heading 8-)
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading
*Italic text* or _Italic text_
**Bold text** or __Bold text__
***Bold and italic text***
~~Strikethrough text~~";
// Convert Markdown to HTML
string htmlContent = Markdown.ToHtml(markdownContent);
return View(model: htmlContent);
}
}
MarkdownSample.cshtml
@model string
@{
ViewData["Title"] = "Markdown Example";
}
<div>
@Html.Raw(Model)
</div>
Tạo Helper hoặc Service để chuyển đổi Markdown
public static class MarkdownHelper
{
public static string ToHtml(string markdown)
{
var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
return Markdown.ToHtml(markdown ?? "", pipeline);
}
}
Ở Razor View
@using YourNamespace.Helpers
@model string
<div class="markdown-body">
@Html.Raw(MarkdownHelper.ToHtml(Model))
</div>
Dưới đây là ví dụ khác sử dụng Markdown
# 📌 Giới thiệu
Xin chào! Đây là **bài viết mẫu** sử dụng _Markdown_ trong ASP.NET MVC.
## 🎯 Mục tiêu
- Hiểu cú pháp Markdown cơ bản
- Thực hành chèn hình ảnh, video, liên kết
- Làm việc với danh sách
## 🖼️ Hình ảnh

## 🔗 Liên kết hữu ích
[Truy cập trang chủ .NET](https://dotnet.microsoft.com)
## 📺 Video nhúng
<iframe width="560" height="315" src="https://www.youtube.com/embed/fmlLMXcg9K0?si=fw6D0JZDFuCWcMAB" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
## 📋 Danh sách
### ✅ Danh sách không thứ tự:
- ASP.NET MVC
- Razor View
- Markdig Library
### 🔢 Danh sách có thứ tự:
1. Viết nội dung bằng Markdown
2. Lưu vào Database
3. Render bằng Markdig
## 🧾 Ghi chú
Bạn có thể **ngắt dòng** bằng cách kết thúc dòng hiện tại với 2 dấu cách `␣␣` rồi enter.
Ví dụ:
Dòng 1
Dòng 2
---
Cảm ơn bạn đã đọc đến đây! 🎉
Sửa lại Action
public IActionResult ReadFromTemplate(string fileName = "readme")
{
var filePath = Path.Combine(_env.ContentRootPath, "Templates", $"{fileName}.md");
if (!System.IO.File.Exists(filePath))
{
return NotFound("Markdown file not found.");
}
string markdownContent = System.IO.File.ReadAllText(filePath);
string htmlContent = Markdown.ToHtml(markdownContent);
return View(model: htmlContent);
}
Nhận xét
Đăng nhận xét