2009-08-18 102 views
1

我需要公开一些输入字段,这些输入字段是基于我在程序集中为特定类型找到的属性。用C#构建动态用户界面?

我不确定这种方法有多常见。也许有更简单的方法。也许在客户端而不是服务器端。

如果有人知道这样做的好方法,我将不胜感激。

相应地创建输入控件并简单地将控件添加到某个div容器?我不确定它是否会比这更复杂。 我需要以某种方式添加CSS类到控件,因为我建立它们,所以他们得到很好地放置;这可能会变得棘手。

+1

你在使用什么服务器端语言? – Sampson 2009-08-18 16:10:20

+0

我正在用C#语言........ – topwik 2009-08-18 16:14:22

+0

@Jonathan Sampson:同意。任何服务器端语言都会执行@towps想要做的事情......但是100%的语言依赖性如何。 – Randolpho 2009-08-18 16:14:25

回答

0

我最终利用jQuery。

我制定了一个简单的标记,其中包含我需要的基本布局。

为了动态创建控件,我使用jQuery方法在javascript中完成了所有操作。

这当然要求您将一些数据集足够智能地返回到UI以呈现它。

+0

当然,虽然这不是C#,但我发现这是一个更好的方法。 – topwik 2009-11-03 16:51:46

1

这听起来像标准的asp.net开发。任何好的教程都应该能够帮助你。对于asp服务器控件,使用CssClass属性来设置控件的类。

这是W3C Schools的asp.net tutorial

+0

一致认为,网络编程的重点是基于某些条件呈现动态控件。 – 2009-10-26 23:44:52

0

我假设你将使用反射来找出实体具有的属性,然后你会根据属性的类型创建一个输入字段。你将不得不动态创建控制来处理后面代码中的输入。确保你给这个控制和ID。您将不得不在邮件后面重新创建这些控件。这看起来像我的动态属性编辑器。可能有一些免费的,谷歌的。

0

如果UI不必是完全动态的,您可以在标记中包含所有控件,并将任何可选项设置为Visible =“false”。然后,选择性地在代码隐藏中启用适当的控件。例如:

Default.aspx的

<asp:Button ID="EvenButton" runat="server" Text="Even" Visible="false" /> 
    <asp:Button ID="OddButton" runat="server" Text="Odd" Visible="false" /> 

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
    { 
     String msg = "A message to count"; 

     if (msg.Length % 2 == 0) 
     { 
      // Enable the Even Button 
      EvenButton.Visible = true; 
     } 
     else 
     { 
      OddButton.Visible = true; 
     } 
    } 

这种方法的好处是,你可以在标记很容易打下的事情了用适当的CSS。另一方面,如果你的UI比这更动态,你可能需要在代码隐藏中动态创建控件,并通过调用Controls.Add()将它们添加到页面中。然而,这种方式很难布局。而且你必须处理一些事情,比如每次回发时重新连线任何事件处理程序。

希望有所帮助。