代码之家  ›  专栏  ›  技术社区  ›  Pharabus

asp.net mvc中的选择列表用法

  •  8
  • Pharabus  · 技术社区  · 16 年前

    我正在开发一个MVC网站,这是我公司做的第一个网站,我发现自己经常做的一件事是在控制器中创建选择列表,将它们放在viewdata中,并在创建html时读取它们。下拉列表。有几件事让我觉得我做事的方式很臭。

    1. 有些页面可以重复列表(酒店房间的董事会费率,用户可以根据需要向酒店添加任意数量的房间),目前我使用相同的选择列表,这是好的做法吗,还是他们应该各有一个?

    2. 在前面的示例中,“房间”是通过renderpartial或jquery的ajax调用呈现的ascx。控制器传递选择列表以便ascx可以使用它的最佳方式是什么,目前我将其添加到页面的viewdata中,这将其viewdata传递给renderpartial,但在ajax调用时,action方法还需要将选择列表添加到ascx的viewdata中,但我不确定这是最佳方式。

    3. 我有一个存储库,它保存了这些“静态”数据,并以通用列表的形式返回,所以每次控制器需要数据时,它都会访问存储库中的列表(除了董事会费率,还有一些其他数据,比如人物、先生、夫人等的头衔),我怀疑某种缓存会更好,因为数据很少发生变化。

    有人在这些方面有什么建议吗?

    2 回复  |  直到 13 年前
        1
  •  3
  •   maxnk    16 年前
    1. 如果这些SelectList完全相等,那么我肯定最好用一个列表来表示多个DropDownList。

    2. 看起来像它的常用用法。我也在使用类似的方法,但考虑将一些控件移植到Html。RenderAction,因为通过页面的ViewData进行控制对我来说也不太好。是的,我知道它不会是纯粹的MVC:)

    3. 如果你的ORM支持缓存,当然可以使用它。

    但如果你的项目规模不小,并且你认为它会继续增长,我建议在你的存储库之上实现一个服务层(PoEAA模式),它也将包含业务逻辑和缓存管理逻辑。

    如果你想透明地管理缓存,而不影响dal或mvc层,我认为最好的方法是使用AOP。

        2
  •  0
  •   Darryl Braaten    16 年前

    一种方法是通过类型化视图将选择列表所需的数据放入模型中。视图可以迭代模型中的数据,以生成所需的任何选择列表。您也可以将对象直接填充到ViewData集合中,但我认为使用类型化视图会使代码更清晰。

    推荐文章