2017-10-04 49 views
0

我目前正在執行webapi調用,然後本質上將JSON映射到我的視圖的預定義模型(它定義驗證屬性等)。但是,我得到的JSON包含每個字段的元數據(例如type,required?,validation regex),所以我想知道是否有一種方法可以用適當的驗證規則動態生成我的模型。在ASP.NET MVC中動態生成模型和驗證

我在想的是,基於webapi數據展示一個表單,這個表單也可以用於發佈回去,而不用預先定義的屬性轉換爲預定義模型。

這裏的任何想法?也許我錯過了一些明顯的事情,因爲這是我第一次處理REST和映射到對象,我使用JSON.Deserialize來填充。

這裏是JSON的一個例子:

{ 
    "Fields": [ 
    { 
    "Alias": "Title", 
    "Name": "salutation", 
    "DataType": 4, 
    "DataTypeString": "OptionSet", 
    "Mandatory": true, 
    "Editable": true, 
    "Order": 1, 
    "CurrentValue": 0, 
    "Options": [ 
    { 
     "Name": "Mr", 
     "Value": "0", 
     "Default": false 
    }, 
    { 
     "Name": "Mrs", 
     "Value": "1", 
     "Default": false 
    }, 
    { 
     "Name": "Ms", 
     "Value": "2", 
     "Default": false 
    }, 
    { 
     "Name": "Miss", 
     "Value": "3", 
     "Default": false 
    } 
    ], 
    "OptionLinks": [] 
}, 
{ 
    "Alias": "First Name", 
    "Name": "firstname", 
    "DataType": 1, 
    "DataTypeString": "String", 
    "Mandatory": true, 
    "ValidationRegex": [ 
    "^[a-zA-Z]*$" 
    ], 
    "Editable": true, 
    "Order": 2, 
    "Options": [], 
    "OptionLinks": [] 
}, 
{ 
    "Alias": "Middle Name", 
    "Name": "middlename", 
    "DataType": 1, 
    "DataTypeString": "String", 
    "Mandatory": true, 
    "ValidationRegex": [ 
    "^[a-zA-Z\\s]*$" 
    ], 
    "Editable": true, 
    "Order": 3, 
    "Options": [], 
    "OptionLinks": [] 
}, 
{ 
    "Alias": "Surname", 
    "Name": "lastname", 
    "DataType": 1, 
    "DataTypeString": "String", 
    "Mandatory": true, 
    "ValidationRegex": [ 
    "^[a-zA-Z]*$" 
    ], 
    "Editable": true, 
    "Order": 4, 
    "Options": [], 
    "OptionLinks": [] 
    } 
] 
} 
+0

您可以發佈您收到的Json示例嗎? – Thennarasan

+0

我想你可能正在尋找動態對象。 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/using-type-dynamic但使用動態處理時要格外小心。 – Verthosa

+0

新增JSON例子我回來了。我正在使用NewtonSoft進行JSON操作。我的想法是收集一些字段對象,希望NewtonSoft可以通過反序列化直接填充,然後我可以根據請求特定字段動態創建模型,或者我需要將所述字段映射到我的預定義模型。無論如何,動態使用元數據仍然存在問題...... – user2367743

回答

0

我們結束了創建一個合適的模型,用Field對象的集合,然後將意見動態拉動相關領域對象指定網頁。然後,我們創建了一個自定義模型綁定器來檢查驗證等等。