创建自定义的带颜色标题的 HTML Helper 方法。

添加 HTML Helper 方法

打开之前创建的 MyWebApp,在项目根目录创建 Extensions 文件夹,然后在文件夹中创建 CustomHtmlHelper.cs:

  1. using Microsoft.AspNetCore.Html;
  2. namespace Microsoft.AspNetCore.Mvc.Rendering
  3. {
  4. public static class MyHtmlHelperExtensions
  5. {
  6. public static IHtmlContent ColorfulHeading(this IHtmlHelper htmlHelper, int level, string color, string content)
  7. {
  8. level = level < 1 ? 1 : level;
  9. level = level > 6 ? 6 : level;
  10. var tagName = $"h{level}";
  11. var tagBuilder = new TagBuilder(tagName);
  12. tagBuilder.Attributes.Add("style", $"color:{color ?? "green"}");
  13. tagBuilder.InnerHtml.Append(content ?? string.Empty);
  14. return tagBuilder;
  15. }
  16. }
  17. }

注意该扩展方法是声明在 Microsoft.AspNetCore.Mvc.Rendering 命名空间中的,视图会自动引用该命名空间。如果你使用自己的命名空间,记得在视图中使用 @using 手动引用。

使用 HTML Helper

在 Controllers 文件夹下创建 HomeController:

  1. using Microsoft.AspNetCore.Mvc;
  2. namespace MyWebApp
  3. {
  4. public class HomeController : Controller
  5. {
  6. public IActionResult Index()
  7. {
  8. ViewData["country"] = "United States";
  9. ViewData["state"] = "Washington";
  10. ViewData["county"] = "King";
  11. ViewData["city"] = "Redmond";
  12. return View();
  13. }
  14. }
  15. }

添加 Index 视图,使用 HTML Helper:

  1. <html>
  2. <body>
  3. @Html.ColorfulHeading(1, "red", ViewData["country"].ToString())
  4. @Html.ColorfulHeading(2, "orange", ViewData["state"].ToString())
  5. @Html.ColorfulHeading(3, "blue", ViewData["county"].ToString())
  6. @Html.ColorfulHeading(4, "greem", ViewData["city"].ToString())
  7. </body>
  8. </html>