0

我目前正在开发的网站可以显示动态构建的表单。

Aform由 组成fields,由用户直接创建,可以显示为我们支持的多种类型之一(文本框、列表框、复选框、单选按钮列表等)。呈现逻辑使用 arepeater迭代用户定义的所有字段的集合。

在转发器内部(直接在 aspx 页面中),定义了我们支持的每种类型的一个实例。

<asp:Repeater ID="fieldRepeater" runat="server">
    <ItemTemplate>
        <asp:TextBox ID="textBox" runat="server" />
        <asp:DropDownList ID="dropDownList" runat="server" />
        <asp:CheckBox ID="checkBox" runat="server" />
        <asp:RadioButtonList ID="radioButtonList" runat="server" />
        [...]
    </ItemTemplate>
</asp:Repeater>

在加载过程中,我们找出需要哪个控件并主动隐藏所有其他控件。

作为基于 Web 的开发世界的新手,这种方法对我来说似乎很奇怪。我的直觉更愿意保持 UI 干净并准确地实例化 CodeBehind 中所需的控件,而不是开始“玩”可见性......但当前的方法也有一些明显的好处。

真的是如何在网络应用程序中做到这一点吗?这里有一些最佳实践吗?

谢谢!

4

1 回答 1

0

我不知道这里的最佳实践是什么,但我之前在之前的项目中做过类似的事情,并尝试了这两种方法。两者都会起作用。

在代码隐藏中创建控件可能很繁琐,尤其是在您必须处理回发时。控件必须在 OnInit 中创建,否则它们将无法获取已发布的表单值和填充的视图状态。如果任何控件的创建都是基于其他控件的值,这将导致复杂化,因为如果不手动深入研究已发布的表单值,您将无法知道这些值。

我能想到的当前方法的唯一实际缺点是所有四个控件(TextBox、DropDownList 等)都必须由 ASP.Net 在服务器端进行实例化和处理,这有点浪费资源。但这可能不太重要。也许做一些分析看看。我确实同意这似乎有点奇怪,但感觉不是很“干净”。

正如您所说,您是 Web 开发的新手,那么我建议您继续使用当前的方法,包括所有控件并隐藏不相关的控件。当我这样做时,我发现它更简单,即使它看起来可能不那么好。

祝你好运!

于 2012-05-29T14:52:19.343 回答