正在代码中生成表单元素

本文关键字:表单 元素 代码 | 更新日期: 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的尝试都必须是例外,而不是规则。