例如,我们有一些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标记是我们的朋友,而不是我们的敌人。两个问题:
答案 0 :(得分:17)
我投票使用控件,因为如果该标记发生了变化(比如你想在框中添加一些不错的jQueryUI效果或添加一个RequiredFieldValidator控件),你可以在一个地方进行更改并完成它。 DRY。
答案 1 :(得分:7)
反对控制:
对于控件:
答案 2 :(得分:4)
我会说“不要成为抽象宇航员”又名“建筑宇航员”
进一步阅读:http://www.joelonsoftware.com/articles/fog0000000018.html
答案 3 :(得分:1)
根据这个确切的例子,我可以根据个人经验与你站在一起。它可能不适用于其他场景,但标签+文本框应该保持分开。通常一切都很好,直到你通过项目大约2/3,其他人开始批判性地审查它。我的经验是用户/经理/ ui设计师在许多地方都需要例外 - 不同的间距,标签和文本框之间的额外内容等。还要记住验证例程和一个验证器不适合ASP.NET中的所有大小。当你得到这样一个工作控件来处理所有不同的场景时,在表单上保留label + textbox可能就不那么重要了。
答案 4 :(得分:0)
通过CSS“强制执行”外观,花费更少的时间,支持,维护和白发。复合控件没有任何固有的“强制执行”(这是你的第二个代码片段。)然而,自定义控件还有很多工作要做。
底线:自定义控件是关于重用和重新分配,而不是布局。
答案 5 :(得分:0)
我做了类似的事情。把它带到极端,你在页面上有30-40个像这样的控件。拥有控制标签,验证器等的控件可以让您的生活更轻松。
我们还有自动表单助手,可以将表单值加载到对象上,反之亦然,以减轻所有
lefthand = righthand
代码遍布整个地方。
答案 6 :(得分:0)
如果您打算重新使用代码,或者如果您希望在代码上定义自定义属性或属性,则使用自定义控件可能是一个不错的选择,但除此之外毫无意义。
答案 7 :(得分:0)
我同意Franci ......有充分的理由使用这样的控件。但是,不要把它带到极端。如果你被告知一切应该是一个控件并在一个单独的文件中编译,那么有人会盲目地执行一项策略而不使用常识。只有适用的政策才有效。在不适用的情况下应用政策(或编码模式)通常会导致噩梦。
其他人已经说过,但我在这里回答的原因是要指出一件特别的事情。如果您是初级开发人员并且有一位资深人士告诉您以某种方式做事 - 您就是这样做的。他们有可能知道您不了解的要求,或者他们没有告诉您的环境问题。有很多次我告诉一个初级开发人员“只是按照这种方式做”而没有很多解释原因 - 因为我们只需要完成它,给他们一个编程课是我没有时间的。我会经常回去向他们解释一下,但是当一个项目落后于时间表时(他们总是如此),你会做你所说的话并在以后争论。
答案 8 :(得分:0)
我会说这取决于控件的使用量,它只是在一个项目中,还是需要在其他项目中发布?并且用户控件有什么问题?你获得了可重用性+你仍然有标记