2013-03-18 65 views
0

我將不勝感激任何有關實施以下場景的技術/策略的幫助:
1. SQL數據庫具有包含一些字段的Customer表。 2.允許用戶添加其他自定義字段並指定數據類型以及某些規則(如值是必需的等) 3.當用戶加載用戶界面時,這些自定義字段需要顯示爲具有驗證的任何其他標準字段在場上。 4.當用戶保存的變化,在這些自定義字段中的值需要被保存到數據庫實現動態用戶界面ASP.Net

技術
我們仍處於設計階段 - 那麼對所有人開放的建議。但是技能主要是在SQL,ASP.Net Web窗體

問題
1.什麼是實現上述第2項的最佳方式 - 一個單獨的表存儲表名,字段名,數據類型,規則等?對於任何反饋,我們都表示感謝。
2.實現上述第3項和第4項的最佳方式是什麼 - 我一直在閱讀動態數據,數據註釋等。所有這些看起來都很有前途,但我不確定這些可以用於解決我們的問題。

再次感謝任何幫助我們提出良好設計的幫助。

回答

0

在我最近的應用程序,我做到了,像這樣:

  1. 數據庫表稱爲CustomFields與此架構:(CustomFieldId int PK, DisplayName nvarchar(50), Class int, Type int)
  2. 每個擴展實體有一個新列名爲CustomFieldValues這是nvarchar(MAX)。每個實體都有一個號碼位於CustomFields的Class中。 CustomFieldValues
  3. 然後一些ASP.NET MVC view-hackery顯示自定義字段。

基本上,表CustomFields定義每個字段(它的名稱,數據類型,和它與相關聯的類實體的),並且每個實體的CustomFieldValues屬性列出了實際的數據,它被序列化爲一個CSV串只包含簡單的值:字符串,整數,小數等,沒有複雜類型或圖形。

我使用ASP.NET MVC作爲前端的東西,因爲WebForms實際上更難以使用,特別是動態添加字段。我必須對綁定進行一些更改,以確保我的模型被拾取,但一切都很好。

如果你使用MVC,你需要一個自定義的視圖模型類,看起來像這樣:

public class CustomFormViewModel { 

    public List<CustomFieldViewModel> CustomFields { get; set; } 

} 

public class CustomFieldViewModel { 

    public Int32 CustomFieldId { get; set; } // the field ID for definition lookup 
    public String Value { get; set; } 
} 
視圖

然後:

<% for(int i=0;i<Model.CustomFields.Count;i++) { %> 
    <%= Html.TextBoxFor(m => m[i].Value) %> 
<% } %> 

在你的行動,一切都應該是神奇開往你:

[HttpPost] 
public ActionResult CustomForm(CustomFormViewModel model) { 
    model.CutomFields[0].Value == "foo"; 
} 

Simples!

請注意,ASP.NET MVC確實有一些bug綁定這個,有樂趣找到它們!

+0

非常感謝您的快速響應。在我們開始設計時,我會牢記這一點! – user2184255 2013-03-21 03:01:16