Asp.net core 在ASP.NET核心MVC中使用标记帮助程序的优势是什么
我刚刚看到一篇关于ASP.NET核心特性的好文章,名为 从那里,我了解到可以替换以下代码:Asp.net core 在ASP.NET核心MVC中使用标记帮助程序的优势是什么,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我刚刚看到一篇关于ASP.NET核心特性的好文章,名为 从那里,我了解到可以替换以下代码: @model MyProject.Models.Product @using (Html.BeginForm()) { <div> @Html.LabelFor(m => p.Name, "Name:") @Html.TextBoxFor(m => p.Name) </div> <input type="s
@model MyProject.Models.Product
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(m => p.Name, "Name:")
@Html.TextBoxFor(m => p.Name)
</div>
<input type="submit" value="Create" />
}
@model MyProject.Models.Product
@使用(Html.BeginForm())
{
@LabelFor(m=>p.Name,“Name:”)
@Html.TextBoxFor(m=>p.Name)
}
与:
@model MyProject.Models.Product
@addtaghelper“Microsoft.AspNet.Mvc.TagHelpers”
姓名:
有一些新的语法,例如
asp-controller
,asp-for
,但是它做什么呢?这种新方法的优点是什么?到目前为止,我看到的最重要的改进是它保证了对HTML元素的控制。MVC使用的Html帮助程序虽然方便,但在您尝试执行它们不是为之构建的事情时会产生问题
在MVC5中使用文本框时可以看到一个简单的示例:
@Html.TextBoxFor(m => p.Name)
生成的HTML标记如下所示:
<input class="form-control" id="Name" name="Name" type="text" value="">
虽然您可能会争辩说,这仍然不是直接的HTML代码,但它不再是一个显著的优势。更糟糕的是,此解决方案仍然没有覆盖相当常见的属性中的破折号。如果您需要它们,您将不得不使用一种变通方法,例如
我已经用自定义编辑器修复了这些缺陷,并尝试构建自己的文本框控件。很快,替换包含的文本框模板将需要大量工作。更糟糕的是,您的模板必须了解要使用它们而添加的任何扩展
MVC中包含了引导和其他第三方工具,这似乎使得当前的设计在扩展HTML方面存在问题变得更加明显,需要解决这些问题。希望tag helpers的实现足够完整,我们可以在将来避免它们。想到一些事情:
@using (Html.BeginForm(...)){
{
<input ... />
}
@使用(Html.BeginForm(…){
{
}
但是关于BeginForm()
没有任何东西会强迫您使用语句将其放入中,也没有任何东西可以阻止您使用不正确的HTML结构。(
从技术上讲,它直接位于
标记中。)
更不用说,你的网页设计师将有真正的HTML标签可供编辑,他们可以识别这些标签来重新设计你的网页。设计师不必是编码员,他们有足够的时间来跟上,研究HTML5和CSS3规范的移动目标。你问你的问题,我也在想同样的事情……甚至从已经提供的答案来看,是的,我得到了一些答案,但仍然感觉52(标签)/48更好
@Html.TextBoxFor(m => p.Name,
new {@class="form-control has-error", placeholder="Enter Name",
superCoolFeature="Do something cool"})
@using (Html.BeginForm(...)){
{
<input ... />
}