ASP MVC横幅旋转器

时间:2011-01-23 22:21:48

标签: asp.net-mvc asp.net-mvc-2 architecture

对于我的网站,我想实现一个位于网站左侧的横幅控件。 横幅将以html形式存储在数据库中,每个横幅都有一个评级。然后使用评级,每个人都会有多次出现(百分比)。

  1. 您认为有一个可行的解决方案将所有这些流程放在一个单独的dll中吗?这甚至可以在mvc架构中实现。我更喜欢将其作为局部视图,并将所有内容都放在一个单独的dll中,即部分视图和数据访问层。你认为这是一个很好的解决方案吗?

  2. 当您必须实施“用户控制”(部分视图)时,您的方法是什么?您是将它放在网站项目还是单独的项目中?

  3. 有没有其他方法可以实现这一点,而不是使用局部视图?

  4. 谢谢,Radu

1 个答案:

答案 0 :(得分:2)

你有几个选择 -

  1. 将其作为HtmlHelper扩展程序。可能不适合这种事情,因为展示横幅和相关逻辑的管理实际上是横幅组件/小部件/部分的关注。

  2. 将其作为部分视图并使用Html.RenderPartial(object Model)来调用它。现在逻辑处于局部视图中,但是可能还有一些应用程序逻辑不应该真正进入视图并且真正属于模型或控制器。此外,您最终可以将胖视图模型传递给主视图,该视图模型还必须为主视图中呈现的每个部分提供视图模型。我认为在某些情况下这并不理想,特别是当部分视图模型中的数据与主视图的数据无关时。这带给我们......

  3. 将其作为具有关联控制器和部分视图的子操作。逻辑将很好地封装在控制器中,部分视图将简单地呈现出从BannerController传递的任何内容。

  4. 您当然可以将其置于单独的程序集中,并将其设置为 Portable area 。这样,您可以将部分视图嵌入到程序集中并重用该窗口小部件,只需将程序集放在bin文件夹中并在主应用程序项目中引用它(您可能还需要设置一些配置) 。

    我是否会亲自这样做取决于组件的重复使用;老实说,我可能会在主要应用程序的某个区域内进行设置,然后,如果我发现需要重复使用它,请将其移到便携区域。

    我通常也希望将数据访问逻辑保存在单独的程序集中,并使用 repository pattern along with IoC to inject repositories 对控制器进行数据访问。