4

你更喜欢用哪种方式在 MVC 中创建表单?

<% Html.Form() { %>
<% } %>

或者

<form action="<%= Url.Action("ManageImage", "UserAccount") %>" method="post">
</form>

我知道从 PR5 开始的 Html.Form() 现在只使用请求提供的 URL。但是,我对此并不满意,尤其是因为我将获得所包含的任何查询字符串的所有包袱。

你怎么看?

4

6 回答 6

7

第二种方式,肯定的。第一种方式是以程序员为中心,这不是 MVC 的 V 部分的内容。第二种方式更以设计者为中心,只在需要的地方绑定到模型,让 HTML 尽可能自然。

于 2008-09-03T18:55:59.357 回答
3

总的来说,我觉得我有点老派,因为我更喜欢滚动自己的 HTML 元素。

我也更喜欢像NHaml这样的视图引擎,它使编写 HTML 几乎简单了一个数量级。

于 2008-09-03T18:46:32.233 回答
1

我必须同意你们两个的观点,我不太喜欢这种似乎正在集成到 MVC 中的简单 WebForms 样式。这些东西几乎看起来应该是一个 3rd 方库,或者至少是一个扩展库,如果需要或想要的话可​​以包含在内。

于 2008-09-03T20:27:45.127 回答
1

我完全赞同老式的 HTML,这是设计师使用的。出于这个原因,我不喜欢包含太多以代码为中心的语法。我将 Web 表单视图引擎视为第三方库,因为我用不同的视图引擎替换了它。如果您不喜欢 Web 表单视图模型的工作方式或发展方向,您总是可以选择不同的路线。这是我喜欢 ASP.NET MVC 的主要原因之一。

于 2008-09-04T00:52:48.157 回答
1

我同意 Andrew Peters,DRY。还应该指出的是,您可以将控制器、操作和参数指定给 .Form() 帮助程序,如果它们符合您的路由规则,则不会使用查询字符串参数。

我也理解 Will 对 MVC 中的 V 的看法。在我看来,只要是为了视图,将代码放在视图中就不是问题。如果您不小心,很容易跨越控制器和视图之间的界限。就我个人而言,我无法忍受将 C# 用作模板引擎而不流血或产生谋杀某人的冲动。这有助于我保持逻辑分离,C# 中的控制器逻辑,盲文中的视图逻辑。

于 2008-09-04T19:46:06.060 回答
0

使用助手的原因是它们允许您以一致且 DRY 的方式封装常见模式。将它们视为一种重构视图以消除重复的方式,就像使用常规代码一样。

例如,我在博客中介绍了一些 RESTful NHaml 助手,它们可以基于模型构建 url。

于 2008-09-04T02:16:04.900 回答