在MVC中使用HtmlHelper有什么好处吗?

时间:2008-11-08 01:21:05

标签: asp.net-mvc

我是否应该使用Html.CheckBoxHtml.TextBox等方法而不仅仅是手动编写HTML?

<%= Html.TextBox("uri") %>

呈现以下HTML

<input type="text" value="" name="uri" id="uri"/>

它猜测它会为你节省一些关键击键但除此之外。是否有一个特定的原因,为什么我应该尽可能地使用HtmlHelpers或者它只是一个偏好的东西?

6 个答案:

答案 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为条件输出提供控件的值。