您更喜欢以哪种方式在MVC中创建表单?

时间:2008-09-03 18:41:11

标签: asp.net-mvc forms model-view-controller

您更喜欢以哪种方式在MVC中创建表单?

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

或者

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

据我所知,PR5中的Html.Form()现在只使用请求提供的URL。然而,关于这一点并不适合我,特别是因为我将获得所包含的任何查询字符串的所有包袱。

你有什么看法?

6 个答案:

答案 0 :(得分:7)

第二种方式,绝对是。第一种方式是以程序员为中心,这不是MVC的V部分。第二种方式是更多以设计师为中心,仅在必要时绑定到模型,使HTML尽可能自然。

答案 1 :(得分:3)

总的来说,我觉得我有点老了,因为我更愿意推出自己的HTML元素。

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

答案 2 :(得分:1)

我必须同意你们两个人的观点,我不太喜欢这种简单的WebForms风格,它似乎正在融入MVC。这些东西几乎看起来应该是第三方库,或者至少是一个扩展库,如果需要或想要可以包含它。

答案 3 :(得分:1)

我完全认为老派的HTML,这是设计师使用的。出于这个原因,我不喜欢包含很多以代码为中心的语法。我将Web表单视图引擎视为第三方库,因为我将其替换为不同的视图引擎。如果您不喜欢Web表单视图模型的工作方式或方向,您始终可以go a different route。这是我喜欢ASP.NET MVC的主要原因之一。

答案 4 :(得分:1)

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

我也理解威尔在MVC中对V的看法。在我看来,只要是视图,我就不认为将代码放在视图中是个问题。如果你不小心的话,很容易跨越控制器和视图之间的界限。就个人而言,我不能忍受使用C#作为模板引擎而不会让我的眼睛流血或者有谋杀某人的冲动。这有助于我保持逻辑分离,控制器逻辑在C#中,在brail中查看逻辑。

答案 5 :(得分:0)

使用帮助程序的原因是它们允许您以一致和干燥的方式封装常见模式。将它们视为重构视图以消除重复的方式,就像使用常规代码一样。

例如,我blogged关于一些可以根据模型构建URL的RESTful NHaml助手。