了解标记帮助器和页面处理程序

已完成

在上一单元中,你创建了一个显示披萨列表的 Razor 页面。 你使用了 @ 符号在 HTML 和 C# 之间切换上下文。 在此单元中,你将了解标记帮助程序。 标记帮助程序是一种特殊的可以包含 C# 代码的 HTML 元素。 你还将了解页面处理程序。 页面处理程序是处理浏览器请求的方法。 你将在下一单元中使用页面处理程序来添加和删除披萨。

标记帮助程序

标记帮助程序用于解决 HTML 和 C# 之间上下文切换效率低下问题。 ASP.NET Core 内置的多数标记帮助程序都可扩展标准 HTML 元素。 标记帮助程序为 HTML 元素提供了额外的服务器端特性,使元素更加可靠。

对于此项目,你应该知道四个标记帮助程序:Partial、Label、Input 和 Validation Summary Message。

分部标记帮助程序

<partial name="_ValidationScriptsPartial" />

这会将 _ValidationScriptsPartial.cshtml 文件的内容注入页面。 _ValidationScriptsPartial.cshtml 文件包含用于验证表单输入的 JavaScript,因此需要将其包含在包含表单的每个页面上。

标签标记帮助程序

<label asp-for="Foo.Id" class="control-label"></label>

这扩展了标准 HTML <label> 元素。 与许多标记帮助程序一样,它使用 asp-for 特性。 特性接受来自 PageModel 的属性。 在本例中,PageModelFoo.Id 属性的名称(具体来说,字符串 "Id")将呈现为 HTML <label> 元素的内容。

输入标记帮助程序

<input asp-for="Foo.Id" class="form-control" />

与前面的示例类似,这会扩展标准 HTML <input> 元素。 它还使用 asp-for 特性来指定 PageModel 属性。 在本例中,Foo.Id 属性的值将作为 HTML <input> 元素的 value 特性呈现。

验证摘要标记帮助程序

<div asp-validation-summary="All"></div>

验证摘要标记帮助程序显示模型上单个属性的验证消息。

注意

验证规则和属性显示名称等内容在 PageModel 类中定义。 我们将在下一单元中指出在代码中的什么位置查找它们。

页面处理程序

PageModel 类定义 HTTP 请求的页面处理程序和用于呈现页面的数据。 在上一练习中,PizzaListModel 类通过将 PizzaList 属性的值设置为 _service.GetPizzas() 的值处理了 HTTP GET 请求。

常见的处理程序包括用于页面初始化的 OnGet 和用于表单提交的 OnPost。 为了处理 HTTP POST,页面处理程序可能会验证用户提交的数据。如果该数据无效,则会再次显示输入表单页,或者将有效数据发送到服务或数据库进行保留。

在下一单元中,你将添加一个表单,以使用多个标记帮助程序创建新披萨。 你还将添加页面处理程序来处理表单提交和删除披萨。