2012-05-29 23 views
0

我目前正在开发的网站可以显示动态构建的表单。Asp.Net页面呈现和UI控件模块化

formfields,其直接由用户创建,并且可以被显示为我们支持多种类型(文本框,列表框,tickbox,单选按钮列表等)中的一个。渲染逻辑使用repeater,它遍历用户定义的所有字段的集合。

在中继器内部(直接在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的清洁和instanciate完全是CodeBehind所需的控件,而不是开始“展现”可见性......但目前的方法也有一些明显的好处。

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

谢谢!

回答

0

我不知道最好的做法是在这里的话,但我已经做在前面的项目之前类似的东西,并试图这两种方法。两者都可以工作。

创建在控制代码隐藏可繁琐,特别是如果你有处理后背上,。必须在OnInit中创建控件,否则它们将无法获取发布的表单值和视图状态。如果任何控件创建基于其他控件的值,这会造成复杂情况,因为如果不手动深入查看发布的表单值,您就不会知道这些值。

我现在可以想到的唯一的实际缺点就是所有四个控件(TextBox,DropDownList等)都必须通过ASP.Net实例化和处理服务器端,这有点浪费的资源。但它可能不是太重要;也许做一些分析看看。我确实同意这看起来有些奇怪,但它并不觉得很“干净”。

至于你说你是新的Web开发,那么我会建议你目前包括所有的控制和隐藏不相关的的方式继续进行。尽管看起来不太好,但我发现它更简单。

祝你好运!