为什么在ASP.NET中使用Repeater?

mar*_*cgg 14 c# asp.net webforms repeater ruby-on-rails

我是Ruby on Rails/PHP的人,我的公司让我使用ASP.NET.这并不算太糟糕,我很高兴学习一门新语言,但自从我开始使用这项技术以来,每个人都在困扰着中继器.

问题是我完全没有看到重点:使用转发器比仅仅在循环中显示内容更好吗?我是为了这个而去找程序员的地狱吗?

在轨道我会做...

调节器

@types= Type.find(:all)
Run Code Online (Sandbox Code Playgroud)

视图

 <%@types.each do |t| %>
  <%= t.name %> <%= link_to "view", t%>
 <%end%>
Run Code Online (Sandbox Code Playgroud)

在ASP.NET中我会这样做:

控制器类属性

protected List<Type> _types = null;
Run Code Online (Sandbox Code Playgroud)

控制器类PageLoad

_types = MethodThatGetTypeFromDB();
Run Code Online (Sandbox Code Playgroud)

视图

<% foreach (var tin _types){%>
   <%= t.name %>
<%}%>
Run Code Online (Sandbox Code Playgroud)

没有中继器,但代码是干净的,DRY并且尊重MVC AP.我不会在ItemDataBound任何地方创建方法来处理或等等.那么这里的想法是什么?我是唯一一个发现中继器设置起来很痛苦并且与它们带来的优势相比不值得的人吗?

我想我不是在这里得到这个想法.

并不是想开始与世界战斗,只是这就是我所知道的最好的,所以这就是我在开发时想要找到的范例.我认为它更方便,我已经习惯了,但是如果有人说"中继器很好,因为A,B和C,做你正在做的事情很糟糕,因为D,E和F",那我就承认了并改变我的方法.

Geo*_*off 10

中继器非常适合代码隐藏方法.我花了很多年时间才能看到标记中的任何代码.所有代码都属于与标记分离的代码隐藏.这很大程度上是对我在经典ASP中处理的可怕混乱的反应.

现在有了ASP.Net MVC,我发现我将回到你上面描述的内容.但是,我发现很难克服保持标记和代码分离的本能.

编辑:这是 2003年关于代码隐藏辩论的文章.

  • 是的,ASP.Net MVC取消了代码隐藏模型,转而采用您描述的方法.但这与过去几年传统的ASP.Net所传播的内容完全相反. (4认同)
  • ASP.Net MVC与Rails和Django等平台更加一致,因为它允许更清晰地实现MVC模式.尝试在MVC模型中执行传统的ASP.Net并不是最干净,也不是最简单的事情,并且非常罕见 - 使未来的开发人员难以维护. (2认同)