【问题标题】:Which way do you prefer to create your forms in MVC?你更喜欢用哪种方式在 MVC 中创建表单?
【发布时间】:2010-09-07 17:20:46
【问题描述】:

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

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

或者

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

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

你怎么看?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我发现自己主要是第一种方式。我是个伪君子。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            例如,我blogged 介绍了一些可以基于模型构建 url 的 RESTful NHaml 助手。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-09-10
              • 1970-01-01
              • 2023-03-18
              • 2014-02-11
              • 1970-01-01
              • 2011-02-04
              相关资源
              最近更新 更多