3

例如,我们有一些 CSS 规则来定义我们的表单布局。我们使用以下标记:

<div class="foo">
    <label class="bar req">Name<em>*</em></label>
    <span>
        <asp:TextBox runat="server"/>
            <label>First</label>
    </span>
    <span>
        <asp:TextBox runat="server"/>
            <label>Last</label>
    </span>
    <div class="clear"></div>
</div>

在我看来,这是非常好的标记。遵循这些规则并不是一种负担,因为无论如何你都应该担心干净、正确的标记。有人建议我们使用如下所示的控件“强制执行”这些规则:

<x:FormField runat="server" Label="Name" Required="True">
    <x:TextBox runat="server" hint="First"/>
    <x:TextBox runat="server" hint="Last"/>
</x:FormField>

我的直觉告诉我,XHTML 标记是我们的朋友,而不是我们的敌人。两个问题:

  1. 我是否完全反对制作所有这些自定义控件只是为了发出标记?
  2. 如果你同意我的观点,你会给出什么理由?
4

9 回答 9

17

我投票选择使用控件,因为如果该标记曾经更改(例如,您想向框添加一些漂亮的 jQueryUI 效果或添加 RequiredFieldValidator 控件),您可以在一个地方进行更改并完成它。干燥。

于 2009-02-25T19:17:16.130 回答
7

反对控制:

  • 性能数字。测量一个基线 XHTML 页面和具有 20 个发出相同标记的控件的同一页面。这会给你一个估计。
  • 附加费用。您需要考虑开发、测试和维护这些控制的成本。

对于控件:

  • 一致性。现在,您可以在一个地方使用您需要的所有元素来控制 XHTML 结构,并且它将在所有页面中保持一致。
  • 回归。您可以进行适当的单元和场景测试,以确保您的 XHTML 结构符合您的要求。
  • 重复使用。您将来可以在其他项目中重复使用相同的控件。
于 2009-02-25T19:24:24.490 回答
4

我会说“不要成为抽象宇航员”又名“建筑宇航员”

进一步阅读:http ://www.joelonsoftware.com/articles/fog0000000018.html

于 2009-02-25T19:41:14.467 回答
1

根据这个确切例子的个人经验,我可以支持你。它可能不适用于其他场景,但标签+文本框应该分开。通常一切都很好,直到你完成项目的 2/3 并且其他人开始批判性地审查它。我的经验是,用户/经理/ui 设计师在很多地方都需要例外——不同的间距、标签和文本框之间的额外内容等。还要记住验证例程,一个验证器并不适合 ASP.NET 中的所有大小。当您获得这样的工作控件来处理所有不同的场景时,在表单上保留标签+文本框可能会减少工作量。

于 2009-02-25T19:20:12.880 回答
0

通过 CSS “实施”外观在时间、支持、维护和白发方面的成本要少得多。关于复合控件(这是您的第二个片段的样子)本质上没有什么比“强制”更多的了。但是,自定义控件涉及更多的工作。

底线:自定义控件是关于重用和重新分配,而不是布局。

于 2009-02-25T19:19:39.370 回答
0

我做类似的事情。把它发挥到极致,一个页面上有 30-40 个这样的控件。拥有为您处理标签、验证器等的控件使您的生活变得更加轻松。

我们还有自动化的表单助手,可以将表单值加载到对象上,反之亦然,以减轻所有

lefthand = righthand到处都是代码。

于 2009-02-25T19:21:54.917 回答
0

如果您打算重用代码,或者如果您希望在代码上定义自定义属性或属性,则使用自定义控件可能是一个不错的选择,但否则没有什么意义。

于 2009-02-25T19:31:10.870 回答
0

我同意弗朗西的观点……使用这样的控件是有充分理由的。但是,不要走极端。如果你被告知一切都应该是一个控件并编译在一个单独的文件中,那么有人在盲目地执行策略并且没有使用常识。政策只有在适用的情况下才是好的。在不适用的情况下应用策略(或编码模式)通常会导致噩梦。

其他人已经说过了,但是我在这里费心回答的原因是要指出一件特别的事情。如果您是初级开发人员,并且有一位资深人士告诉您以某种方式做事 - 您就那样做。他们可能知道您不知道的需求,或者他们没有告诉您的环境。有很多次我告诉初级开发人员“就这样做”,但没有太多解释原因——因为我们只需要完成它,给他们上编程课是我没有时间做的事情. 我通常会稍后回去向他们解释,但是当一个项目落后于计划时(而且他们总是如此),你会按照你被告知的去做,然后再争论。

于 2009-02-25T19:44:41.603 回答
0

我想说这取决于控件的使用量,它只是在一个项目中还是您需要在其他项目中分发它?用户控件有什么问题?你得到了可重用性 + 你仍然有标记

于 2009-02-25T19:48:23.107 回答