ASP.NET:代码落后或没有代码落后?

Cha*_*adD 5 .net asp.net asp.net-3.5 separation-of-concerns

为什么有人不想使用代码隐藏文件,以便服务器端代码与标记分开?这不应该是.NET优于经典ASP的优势之一吗?

就个人而言,我认为将代码与标记混合会使代码更难理解.

我讨厌看到那些与标记交叉拼凑的<%%>(服务器端块),哎呀.我希望这在ASP.NET中仅用于向后兼容Classic ASP,但我总是看到MS中包含那些黄色括号的示例.

我试图理解一个可以在这里下载的代码示例,并解释为什么我执行代码时这里显示的任何服务器端断点都没有中断,即使我看到已经在web.config中设置了.由于我通常使用代码隐藏,我想知道在aspx中是否有一些关于服务器端代码的处理方式有所不同,这阻止了我调试runat = server代码.

所以.我的问题是:

1)为什么有人不想使用代码隐藏文件,以便服务器端代码与标记分开?

2)为什么我可能无法打破服务器端逻辑?

您的见解和意见也欢迎我的任何相关评论.

Pat*_*her 9

使用内联代码的能力<% %>不仅仅是为了向后兼容,而是.NET的一个特性,它可以允许一些(相对!)清晰和直接的解决方案.然而,它经常以不太理想的方式使用.同样,代码隐藏中的代码通常(通常实际上)以不太理想的方式使用,就像web控件一样.

在代码隐藏中使用代码通常不会解决问题,而是将意大利面条代码混杂在与传统asp中不同的地方..NET确实允许您拥有组织良好的解决方案,但是由您来实现它.在页面后面的代码中包含代码并不是该旅程中的第一步,只是旅程可以开始的地方.

至于你的事件没有解雇的原因,很可能是:

  • 事件实际上并未触发.(您是否更改了下拉列表中的选定项目,以实际触发该事件?)
  • 您实际上没有连接事件.在该控件的属性窗口中,是否列出了与相关事件对应的事件函数名称?(这是最简单的方法;例如,您也可以使用vb中的句柄键工作)
  • 通常当我的事件没有被触发时,因为我做了一些愚蠢的事情,比如没有启动我的代码,或者我的网址指向错误的地方.