正在代码中生成表单元素
本文关键字:表单 元素 代码 | 更新日期: 2023-09-27 18:21:55
我有一个web应用程序,它几乎在每个页面上都有一个表单。为了确保每个表单都呈现相同的内容,并使更改更容易,我想在c中的一个中心位置呈现我的所有表单控件,所以如果我需要向输入中添加一个类或更改某些内容,我只需要做一次。
目前,我只使用了一堆静态类,如TextInputHelper、CheckboxInputHelper等,它们使用StringBuilder构建HTML并向我的视图返回一个字符串。
例如,我所有的表单控件都是基本表单:
<section>
<label class="label">Label Text</label>
<label class="input">
...Input Element...
</label>
</section>
我想做的是改进这种情况,因为在不同的辅助类之间仍然有很多重复,特别是对于表单元素的包装器。我最初的想法是创建一个名为BaseFormControl的类,该类具有一个虚拟Render方法,该方法具有控件的外部包装器,然后创建其他实现该方法的类来做特定的事情,例如放置的TextFormControl
<input type="text".....
包装内。
我是否走在正确的道路上,和/或是否有适合我想做的设计模式?
从我的POV中,我读到的是,仅仅因为CSS/HTML标准化可以从客户端轻松解决,您就过度复杂了服务器端。
如果你仍然想采用服务器端方法,那么似乎适用于你的方法的模式是Adapter(Wrapper)模式,这意味着你可能想创建控件包装类,以满足你对每个控件的需求,这些控件呈现的html与ASP.NET内置控件提供的html不同。
如果您想改为格式化一组控件,那么UserControl是更好的方法。
请记住,ASP.NET是本着试图将视图和代码的层分隔开的精神构建的,因此,任何从服务器端生成html的尝试都必须是例外,而不是规则。