ZetCode

ASP.NET HtmlHelper

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 HtmlHelper。HtmlHelper 是在 Razor 视图中生成 HTML 元素的一个关键组件。它简化了视图开发,并促进了代码重用。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。HtmlHelper 提供了方法,可以通过适当的模型绑定来创建表单控件和其他 HTML 元素。

基本定义

HtmlHelper 是 ASP.NET MVC 中的一个类,它提供了以编程方式生成 HTML 元素的方法。它有助于创建一致且可维护的视图。

HtmlHelper 方法会自动处理模型绑定、验证和属性生成。这减少了手动编写 HTML 的工作量和潜在的错误。

HtmlHelper 可在 Razor 视图中通过 Html 属性访问。它支持通过 HtmlHelper<TModel> 进行强类型辅助,以获得更好的 IntelliSense 和编译时检查。

ASP.NET HtmlHelper 示例

以下示例演示了如何在 ASP.NET 8 中使用 HtmlHelper 创建表单。

Models/Product.cs
public class Product
{
    public int Id { get; set; }
    
    [Required]
    [StringLength(100)]
    public string Name { get; set; }
    
    [Range(0.01, 10000)]
    public decimal Price { get; set; }
    
    [Display(Name = "In Stock")]
    public bool InStock { get; set; }
    
    [DataType(DataType.Date)]
    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }
}

此模型定义了一个带有验证属性的 Product。这些属性将由 HtmlHelper 用于生成适当的 HTML 和验证消息。

Controllers/ProductsController.cs
public class ProductsController : Controller
{
    [HttpGet]
    public IActionResult Create()
    {
        return View();
    }
    
    [HttpPost]
    public IActionResult Create(Product product)
    {
        if (ModelState.IsValid)
        {
            // Save product to database
            return RedirectToAction("Index");
        }
        return View(product);
    }
}

控制器有两个操作:一个用于显示表单(GET),一个用于处理表单提交(POST)。POST 操作会检查模型的有效性。

Views/Products/Create.cshtml
@model Product

<h2>Create New Product</h2>

@using (Html.BeginForm())
{
    <div class="form-group">
        @Html.LabelFor(m => m.Name)
        @Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.Name)
    </div>
    
    <div class="form-group">
        @Html.LabelFor(m => m.Price)
        @Html.TextBoxFor(m => m.Price, new { @class = "form-control" })
        @Html.ValidationMessageFor(m => m.Price)
    </div>
    
    <div class="form-group">
        @Html.LabelFor(m => m.InStock)
        @Html.CheckBoxFor(m => m.InStock)
    </div>
    
    <div class="form-group">
        @Html.LabelFor(m => m.ReleaseDate)
        @Html.EditorFor(m => m.ReleaseDate, new { htmlAttributes = new { @class = "form-control" } })
    </div>
    
    <button type="submit" class="btn btn-primary">Create</button>
}

此 Razor 视图演示了几个 HtmlHelper 方法。BeginForm 创建表单标签。LabelFor 根据模型属性生成标签。

TextBoxFor 创建绑定到模型属性的输入字段。CheckBoxFor 生成一个复选框。EditorFor 根据数据类型选择合适的编辑器。

ValidationMessageFor 显示验证消息。HTML 属性参数允许为元素添加 CSS 类和其他属性。

来源

Microsoft ASP.NET Core Views 文档

在本文中,我们探讨了 ASP.NET 8 中的 HtmlHelper。这项强大的功能在保持强类型和模型绑定的同时,简化了视图开发。

作者

我叫 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有超过十年的经验。

列出所有 ASP.NET 教程