2009-08-18 97 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()將它們添加到頁面中。然而,這種方式很難佈局。而且你必須處理一些事情,比如每次回發時重新連線任何事件處理程序。

希望有所幫助。