我正在寻找使用MVC设计剃刀视图的最佳实践。
这将是更好的选择:
HtmlHelper扩展方法
@Html.TextBox("txtName")
或
直接写html
<input type"text" id="txtName" name="txtName" />
我找到了2个不同的链接。
第一个http://blogs.msdn.com/b/aspnetue/archive/2010/09/17/second_2d00_post.aspx表示 DO使用HTMLHelper扩展方法。
第二个http://codeclimber.net.nz/archive/2009/10/27/12-asp.net-mvc-best-practices.aspx说 10 - 每次可以写HTML
所以我有点被照顾
答案 0 :(得分:1)
由于您使用的是Razor
,因此我会充分利用它提供的功能,HtmlHelper
扩展程序可让您在很多地方更快速,更轻松地编写HTML。
有时您可能需要使用Html,例如,您可能希望在锚中包含标记,而不能使用@Html.ActionLink
。
但是,无论采用哪种方法,您都可以获得相同的结果,我建议您使用Razor
。
答案 1 :(得分:1)
即使名称HtmlHelper
应该已经提示您是否应该使用它。你需要帮忙吗?如果没有,只需从头开始编写html。如何生成html并不重要:从头开始或使用html帮助器。重要的是它是使用正确的输入名称生成的,因此模型绑定器可以将这些输入绑定到模型。
例如,假设您有以下模型将传递给视图并将在POST上接收:
public class SomeModel
{
public Customer Customer { get; set; }
}
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
为了确保您的输入与模型绑定,您需要在页面上输入三个输入:
<input type="hidden" id="whatever" name="Customer.Id" />
<input type="text" id="whatever" name="Customer.FirstName" />
<input type="text" id="whatever" name="Customer.LastName" />
拥有此html标记可确保正确的模型管理。但是,您可以通过使用HtmlHelper来实现此标记,这更容易:
@Html.HiddenFor(m => m.Customer.Id)
@Html.TextBoxFor(m => m.Customer.FirstName)
@Html.TextBoxFor(m => m.Customer.LastName)
这不仅可以为每个输入提供正确的name
属性,还可以相应地分配id
属性,因此您无需自己完成所有操作。
似乎第二篇文章的作者建议永远不要使用HtmlHelpers,原因有二:
我不同意他的观点:“HtmlHelpers,其唯一的生存理由是将HTML隐藏起来”。我宁愿说“HtmlHelpers,其唯一的生存理由是帮助编写Html标记”
<强>要点:强> HtmlHelpers 帮助你写了正确的html标记,这就是为什么我建议你使用它。
答案 2 :(得分:0)
Html帮助程序不是化妆品代码片段,只是节省时间。考虑选择适当的编辑器基于模型属性类型,并且 - 这也非常重要 - 它们有助于客户端验证,前提是包括jquery.unobtrusive-ajax.js和jquery.validate.js。 简单地写HTML就无法实现最后的目标 从我所说的可以很容易地推导出Html帮助者“知道”模型,而普通标记则没有 最后由您来决定使用什么,但在做出决定时,了解更多有关Html助手的信息会更好。