ASP.NET MVC中“搜索数据类”的最佳实践

时间:2010-04-06 18:17:42

标签: asp.net-mvc

我希望这不是太主观,但我是ASP.NET MVC的新手,我正试图弄清楚其他人是如何解决类似问题的。

基本上,我有两个实体,即客户和订单。客户有很多订单;订单只属于一个客户。我正在制作订单搜索功能,允许用户根据订单客户信息搜索订单。我觉得很简单。

我在其他帖子中读过搜索控制器应该使用GET,但我认为使用POST更有意义,因为有大量的搜索参数。

我正在使用Entity Framework来创建我的模型,而这是在一个单独的类库项目和命名空间中。

This article讨论使用绑定而不是Request.Form来获取POST数据。是否有理由让一个类能够保存可以通过魔法模型绑定实现的所有搜索数据?否则我只是通过FormCollection来推出特定的值,这可能没问题。你会在哪里推荐这样的课程?

2 个答案:

答案 0 :(得分:0)

这只是部分答案,特别是“FormCollection vs Class”部分。我认为除非你有充分的理由不这样做,否则你应该总是使用一个类。你在这里得到编译时检查,这是第一个好处。您也可以获得Intellisense支持,这也很有帮助。最后,您可能会获得一些性能优势,因为您的代码可能会减少转换/解析。

对于GET vs POST问题,我自己仍在努力解决这个一般性问题,但我确实对你对它的具体用法有所了解。目前,我倾向于遵守以下规则:

  • 如果参数标识某种entity(即〜/ product / id / 54 =一罐可乐),请使用GET
  • 如果参数有助于生成一个真正动态的页面,使用POST,其中可能存在大量此类页面(搜索结果屏幕是一个几乎无限可能的例子)。

现在我可能会对我的GET vs POST意见感到失望,但我认为在课程与FormCollection意见方面会有很多协议。

答案 1 :(得分:0)

使用类来封装搜索条件。您可以将其设为模型的属性,然后使用标准模型绑定。这样你就可以将一个对象传递给你的搜索方法,这个方法比拥有大量参数更加整洁和可扩展。