ASP .NET 混乱 - 服务器控件

Posted

技术标签:

【中文标题】ASP .NET 混乱 - 服务器控件【英文标题】:ASP .NET confusion - server controls 【发布时间】:2011-02-07 05:28:59 【问题描述】:

我已经阅读了这个问题中的信息:Controls versus standard html,但仍然很困惑。

当时的情况是我被要求做一个网络项目,我在其中制作了一个向导。当我完成这个项目时,每个人都问我为什么使用<asp:Wizard...>。我以为这是我们要求的,但显然不是,所以在这之后我被引导相信服务器控件只是原型工具。

但是,下一个项目我通过 C# 代码隐藏进行数据库查询并通过 html 加载结果。然后我被问到为什么我没有使用网格视图和数据集。

是否有人列出了为什么他们会选择使用特定 html 控件而不是特定服务器控件的利弊列表,为什么?我想我正在寻找一个列表...哪些服务器控件可以使用,为什么?

编辑: 我想这个问题是开放式的,所以我会澄清一些更具体的问题......

    是否可以使用非常简单的控件,例如 asp:Label,或者这些最终会浪费空间?否则在后面的代码中似乎很难访问 html。

    是否有一些控件不应该使用?

    有没有人有好的资源可以告诉我每个控件的优缺点?

【问题讨论】:

【参考方案1】:

服务器控件依赖 ViewState,限制灵活性

服务器控件是向 WinForms 开发人员介绍 Web 开发的强大工具。服务器控件提供的主要好处是状态感和事件驱动的开发模型。然而,自从引入 WebForms 和服务器控件以来,Web 开发的状态已经趋于成熟,它们作为一个整体正面临着increasingly critical view 的挑战。

Server Controls 的主要问题是它们试图过多地抽象 Web 的行为,并且在这样做时,依赖 ViewState 数据和服务器资源来执行它们的魔法。如果过度使用 ViewState 数据,可能会导致页面大小严重膨胀,从而导致performance problems。

现在可以opt out of ViewState,但到那时最好还是简单地求助于常规的 HTML 控件。

使用 HTML 控件,您可以精确控制网页的内容,并且在您希望网页上的行为方面具有更大的灵活性。服务器控件提供有限的客户端灵活性,并强制在服务器上执行大量工作,这些工作可以通过良好的javascript framework 在浏览器中轻松执行。

【讨论】:

感谢您的投票。争论的双方仍有很多争论。一方面,服务器控件更容易设置,但另一方面,HTML 控件提供了更细粒度的控制,并且可能性能更好。这真的取决于你的情况。根据经验:如果您只是要显示平面的只读内容,请使用 HTML 控件或缩减的服务器控件,例如 Literal 或 Repeater,而不是 Label 和 GridView。此外,请尝试在默认情况下禁用 ViewState,并且仅在它提供明显优势的情况下选择加入。【参考方案2】:
    是否可以使用非常简单的控件,例如 asp:Label 或执行这些操作 只是最终浪费空间?它似乎 好像很难访问 html 在后面的代码中,否则。

如果您需要在服务器端代码中访问控件,请使用服务器控件。如果没有,不要。

    是否有一些控件不应该使用?

在我的(中级)经验中没有。向导控件,一旦您知道如何使用它,就会像宣传的那样工作(想象自己对所有功能进行编码,然后进行数学计算)。我已经使用它,它产生了一个流畅且功能强大的多页注册表单,中间保存了数据。

    有没有人有好的资源可以告诉我 每个控件?

我不知道,但我建议在正确的情况下使用正确的控件。例如,研究 Repeater 和 GridView 之间的差异,并根据您的需要使用最佳选择。

当然还有其他选择。一方面,MVC 势头强劲。就我个人而言,我还没有致力于学习它。就交互式表单和 AJAX 而言,许多 .NET 开发人员选择使用 JQuery 进行任何验证和任何 AJAX(UpdatePanel 易于使用且效率极低),并使用 JSON 作为服务器端的传输机制。

【讨论】:

嗯...如果您绝对需要的话,是否可以从后面的代码中访问 html 控件? 另外,感谢您的意见。我想知道是否有比我更熟悉 ASP .NET 的人喜欢使用这些控件。 布兰迪:是的。如果你想要一个从服务器端访问的“常规”html 控件,你可以这样做:。 (添加 'runat' 属性)在此处查看列表:w3schools.com/aspnet/aspnet_refhtmlcontrols.asp 您将无法获得使用 控件获得的事件模型。

以上是关于ASP .NET 混乱 - 服务器控件的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 每个控件的属性有啥作用?

求asp.net所有控件属性。及相关介绍

asp.net怎么用上传控件,上传图片!

如何在(asp.net)自定义服务器控件中维护状态?

ASP.NET用户自定义控件

asp.net服务器控件刷新无法保存住值怎么解决?