了解标记帮助器和页面处理程序
在上一单元中,你创建了一个显示披萨列表的 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
的属性。 在本例中,PageModel
的 Foo.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,页面处理程序可能会验证用户提交的数据。如果该数据无效,则会再次显示输入表单页,或者将有效数据发送到服务或数据库进行保留。
在下一单元中,你将添加一个表单,以使用多个标记帮助程序创建新披萨。 你还将添加页面处理程序来处理表单提交和删除披萨。