【问题标题】:Reading Form Post data vs strongly typed View阅读表单发布数据与强类型视图
【发布时间】:2012-10-19 21:34:38
【问题描述】:

我有一组包含输入元素的 HTML 页面。我正在将它们转换为MVC Views

考虑代码的性能和清洁度。正确的做法是什么,

  1. 将表单处理为已发布的 FormCollection,或

  2. 创建强类型视图以从模型中获取输入值。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    使用 HTML 帮助程序的一个优点是它可以更好地在编译时检查您的视图(允许您在构建时而不是在运行时发现错误),并且在 Visual Studio 中编辑视图模板时还支持更丰富的智能感知。

    另一个优点可能是 HTML 帮助程序允许您在 HTML 标记上设置任何自定义属性。您可以通过传入字典或使用匿名类型(如下所示)使用帮助程序来做到这一点。

    @Html.TextArea("FirstName", Model.FirstName, new { parameter = "value" });
    

    Source 1

    Source 2

    【讨论】:

      【解决方案2】:

      您可以使用 TextBoxFor 的重载来设置/覆盖输入元素属性:

      @Html.TextBoxFor(m => m.Name, new { @Value = "0", readonly="readonly" @class="cssClass"})
      

      【讨论】:

      • 嗨,迈克,谢谢,将所有输入元素转换为相应的 MVC 项目有什么显着优势(性能)。为什么不应该使用 formCollection 进行简单的表单处理?
      • 如果您只是从 Request.Form 中检索操作中的值,MVC 将跳过昂贵的反射来将您的表单元素绑定到模型。但是你没有得到很好的模型绑定验证和可测试性
      【解决方案3】:

      这实际上是一个好问题..我不知道是谁投了反对票...在我看来,严格的视图模型传播者太多了。

      在与 MVC 合作了一段时间后,我的观点是,对于非常简单的事情,@Html 助手工作得很好......但是它们导致了一种思考网页/服务器交互的方式,从长远来看,这是有限的,特别是对于更复杂的用途。它使您可以严重依赖不显眼的验证,而不必了解验证在客户端上的工作原理。这对入门级程序员来说非常有用...就像我曾经一样...但是至少不了解 jquery 验证库最终会妨碍您.进行任何严肃的 Web/Web 应用程序开发,其中验证比检查是否需要值更复杂变得更加困难。此外,如果您更新它们,您依赖 Microsoft 来保持他们的验证库与 jquery 验证库同步(我遇到了这个问题)。

      此外,您还需要考虑如果您正在使用任何前端库,以及它们中的任何一个是否不能很好地与这些帮助程序的输出配合使用(引导程序是一个值得注意的)。话虽这么说,表单集合更快,限制更少......使用它和纯验证库将更容易,更具表现力......让您编写任何您想要的代码。毕竟..在服务器端编写 if(!String.IsNullorEmpty()) 或除客户端之外您需要的任何类型的验证有多难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 1970-01-01
        相关资源
        最近更新 更多