【问题标题】:Why use C# code inline?为什么使用 C# 代码内联?
【发布时间】:2011-07-28 08:40:01
【问题描述】:

我曾经在一次采访中被问到“在 aspx 页面中使用内联 C# 代码的原因是什么”。我无法回答,所以我很好奇。你为什么要这样做而不是使用后面的代码?有技术原因吗?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    对于 ASP .NET WebForms

    通常不建议编写内联代码,因为WebForms 大量使用生成HTML 输出的“控件”,并且预计将由它们处理表示逻辑。例如,要遍历一个数据数组,您宁愿使用asp:Repeater 而不是foreach 循环。在这种情况下使用循环会闻起来很糟糕,并让人想起经典的 ASP 时代,那时标记和代码像意大利面条一样混合在一起。我只能想到使用Response.Write inline 来输出调试信息。

    对于 ASP .NET MVC

    这里的情况完全不同。因为 MVC 不鼓励使用“控件”来支持干净、手工编码的 HTML 标记,所以内联代码是为模型视图生成 HTML 的首选方式。当然,这也取决于您在内联代码中的具体操作。我的经验法则是当渲染视图所需的所有数据都已被控制器随时可用时,使用内联代码。内联代码应该只包含表示逻辑,例如根据条件显示或隐藏字段、从资源中获取字符串、枚举模型中的数组等。你永远不应该从视图中与数据库对话——这就是控制器是为了。

    有些人don't feel comfortable 在 ASP .NET MVC 中使用内联代码,因为他们在编写 WebForms 时了解到“内联代码不好”。这是一个误解,我对此的回答是内联代码只有在执行表示逻辑以外的其他事情时才不好。在 WebForms 中,此逻辑由控件处理,在 MVC 中,由内联代码处理,因此这里没有真正的问题。

    【讨论】:

    • 谢谢,这是我正在寻找的详细、合理的解释。
    • 我真的很喜欢,“内联代码只有在执行表示逻辑以外的事情时才不好”。现在是我能记住的!
    【解决方案2】:

    我会用刻板的“它取决于”来回答..

    如果它是纯粹的视图问题,我会编写内联 C#(并且经常这样做)。 在 MVC 应用程序中,通过在视图中使用简单的 C# 来完成与显示相关的复杂工作,这是一种常见的模式。

    如果有问题的代码与将数据呈现到页面内联 C# 严格相关,那么 C# 很可能是最简单和最简单的解决方案(除非您使用 WebForms 没有什么是简单的)。如果代码与渲染数据不严格相关,我会将渲染部分与处理部分分开,并且只在视图中使用渲染代码。

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2018-06-16
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2012-01-24
      相关资源
      最近更新 更多