我有一个网页应用,几乎每个页面都有一个表单。为了确保每个表单呈现相同,以便更改更容易,我想在中心位置渲染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".....
在包装器内。
我是否在正确的道路上,和/或是否有适合我想做的设计模式?
答案 0 :(得分:0)
从我的POV中我读到的是,由于CSS / HTML标准化很容易从客户端解决,因此您使服务器端变得复杂。
如果您仍想使用服务器端方法,那么适用于您的方法的模式是Adapter(Wrapper)模式,这意味着您可能希望创建控件包装器clases以满足您呈现的每个控件的需求与ASP.NET内置控件提供的不同的HTML。
如果您想要做的是格式化一组控件,那么UserControl就是更好的方法。
请记住,ASP.NET的构建精神是试图保持层与View分离,因此任何从服务器端生成html的尝试都必须是例外而不是规则。