你更喜欢用哪种方式在 MVC 中创建表单?
<% Html.Form() { %>
<% } %>
或者
<form action="<%= Url.Action("ManageImage", "UserAccount") %>" method="post">
</form>
我知道从 PR5 开始的 Html.Form() 现在只使用请求提供的 URL。但是,我对此并不满意,尤其是因为我将获得所包含的任何查询字符串的所有包袱。
你怎么看?
你更喜欢用哪种方式在 MVC 中创建表单?
<% Html.Form() { %>
<% } %>
或者
<form action="<%= Url.Action("ManageImage", "UserAccount") %>" method="post">
</form>
我知道从 PR5 开始的 Html.Form() 现在只使用请求提供的 URL。但是,我对此并不满意,尤其是因为我将获得所包含的任何查询字符串的所有包袱。
你怎么看?
第二种方式,肯定的。第一种方式是以程序员为中心,这不是 MVC 的 V 部分的内容。第二种方式更以设计者为中心,只在需要的地方绑定到模型,让 HTML 尽可能自然。
总的来说,我觉得我有点老派,因为我更喜欢滚动自己的 HTML 元素。
我也更喜欢像NHaml这样的视图引擎,它使编写 HTML 几乎简单了一个数量级。
我必须同意你们两个的观点,我不太喜欢这种似乎正在集成到 MVC 中的简单 WebForms 样式。这些东西几乎看起来应该是一个 3rd 方库,或者至少是一个扩展库,如果需要或想要的话可以包含在内。
我完全赞同老式的 HTML,这是设计师使用的。出于这个原因,我不喜欢包含太多以代码为中心的语法。我将 Web 表单视图引擎视为第三方库,因为我用不同的视图引擎替换了它。如果您不喜欢 Web 表单视图模型的工作方式或发展方向,您总是可以选择不同的路线。这是我喜欢 ASP.NET MVC 的主要原因之一。
我同意 Andrew Peters,DRY。还应该指出的是,您可以将控制器、操作和参数指定给 .Form() 帮助程序,如果它们符合您的路由规则,则不会使用查询字符串参数。
我也理解 Will 对 MVC 中的 V 的看法。在我看来,只要是为了视图,将代码放在视图中就不是问题。如果您不小心,很容易跨越控制器和视图之间的界限。就我个人而言,我无法忍受将 C# 用作模板引擎而不流血或产生谋杀某人的冲动。这有助于我保持逻辑分离,C# 中的控制器逻辑,盲文中的视图逻辑。
使用助手的原因是它们允许您以一致且 DRY 的方式封装常见模式。将它们视为一种重构视图以消除重复的方式,就像使用常规代码一样。
例如,我在博客中介绍了一些 RESTful NHaml 助手,它们可以基于模型构建 url。