道歉我在asp.net mvc我不是很好,我想承认.我刚刚看到一个很好的写作,从
this url的asp.net 5新功能.
从那时起,我听说ASP.Net MVC 6中有一个名为“帮助者”的术语,我看到有人在开发人员以下创建表单之前说:
@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" /> }
现在人们可以用下面的方式用tag helper编写相同的代码
@model MyProject.Models.Product @addtaghelper "Microsoft.AspNet.Mvc.TagHelpers" <form asp-controller="Products" asp-action="Create" method="post"> <div> <label asp-for="Name">Name:</label> <input asp-for="Name" /> </div> <input type="submit" value="Save" /> </form>
他们使用几个新的语法,称为asp-controller,asp-for等,但它会做什么?使用这种新的语法asp-controller,为什么人们会受益匪浅
所以请一些帮助我了解这个新的标签助手概念,以及如何使开发人员的生活更轻松.谢谢.
解决方法
到目前为止,我所看到的最重要的改进是它对HTML元素的控制.虽然方便,MVC使用的Html助手在尝试做未建的事情时会产生问题.
在MVC5中使用TextBox时可以看到一个简单的例子:
@Html.TextBoxFor(m => p.Name)
<input class="form-control" id="Name" name="Name" type="text" value="">
尼斯和简单但是如果要添加占位符属性怎么办?如果要使用bootstrap的验证状态怎么办?如果您有一些需要自定义属性的第三方超酷javascript库,该怎么办?在MVC5的初始版本中,这些都不可能.尽管他们最终以htmlAttributes的形式通过更新添加.即使现在添加自定义属性也是最好的.
@Html.TextBoxFor(m => p.Name,new {@class="form-control has-error",placeholder="Enter Name",superCoolFeature="Do something cool"})
虽然你可以认为这是直接的HTML代码,但它不再是一个显着的优势.更糟糕的是,这个解决方案仍然不能覆盖相当普遍的属性中的破折号.如果你需要他们,你会被困在一个解决方案,如ActionLink htmlAttributes
我已经通过自定义编辑器修复了这些缺陷的路线,并尝试构建我自己的TextBox控件.很明显,替换所包含的TextBox模板需要大量的工作.更糟糕的是,您的模板必须了解您要添加的任何扩展名.
似乎将Bootstrap和其他第三方工具包含在MVC中已经使得更加明显的是,目前的设计在扩展需要修复的HTML中存在问题.希望标签助手的实现已经足够了,我们将来可以避免它们.