我是否应该使用Html.CheckBox
,Html.TextBox
等方法而不仅仅是手动编写HTML?
<%= Html.TextBox("uri") %>
呈现以下HTML
<input type="text" value="" name="uri" id="uri"/>
它猜测它会为你节省一些关键击键但除此之外。是否有一个特定的原因,为什么我应该尽可能地使用HtmlHelpers或者它只是一个偏好的东西?
答案 0 :(得分:7)
另一个好处是,如果您的ViewData包含与字段名称匹配的值,则将填充该值。
e.g。
ViewData["FirstName"] = "Joe Bloggs";
<%=Html.TextBox("FirstName") %>
将呈现
<input type="text" value="Joe Bloggs" id="FirstName" />
答案 1 :(得分:5)
有很多好处:
它有重载方法来预先填充值(格式化,对HTML安全),就像ViewState一样。
它允许内置支持MVC的验证功能。
它允许您通过提供自己的DLL来更改渲染(一种“控制器适配器”类型方法)来覆盖渲染。
这导致了构建自己的“控件”的想法:http://www.singingeels.com/Articles/Building_Custom_ASPNET_MVC_Controls.aspx
答案 2 :(得分:2)
有一点是为了保持一致......我总是忘记了name属性。此外,您可以扩展自己项目的功能。他们没有被称为帮助者!
答案 3 :(得分:2)
使用抽象层的好处是可以通过可插拔方式验证代码。也许今天,你创建HTML 4页面,但明天你想创建XHTML页面或XAML或XUL。如果您只是在任何地方对代码进行硬编码,那么这会有很多变化,特别是如果您有数百页的话。如果一切都在调用这个库,那么你所要做的就是重写库。缺点是人们通常认为它的可读性稍差。因此,它很可能会增加维护程序员的认知需求。这些优点和缺点实际上与MVC无关。
答案 4 :(得分:2)
它实际上是根据ViewData.Model.uri自动填充文本框,然后是ViewData [“uri”]。手动完成,您需要执行<input value="<%Html.Encode(ViewData.Model.Uri"%>" />
答案 5 :(得分:1)
我没有做过MVC太长时间,但我已经编写了一些扩展方法来生成基于Html.ActionLink的菜单选项卡。它允许我与我的用法保持一致,如果我决定更改CSS菜单的工作方式,只需修改一个方法即可输出新的标签格式。
我对它们的另一个用途是使用ViewData为条件输出提供控件的值。