在ASP.NET MVC中动态生成模型和验证

时间:2017-10-04 09:35:32

标签: c# asp.net asp.net-web-api

我正在执行webapi调用,然后基本上将JSON映射到我的视图的预定义模型(定义验证属性等)。

但是,我得到的JSON包括每个字段的元数据(例如类型,必需?,验证正则表达式),所以我想知道是否有办法用适当的验证规则动态生成我的模型。< / p>

我在想的是,提供一个基于webapi数据的表单会很好,它也可以用于POST回来,而不需要转换为预定义属性的预定义模型。

这里有什么想法吗?也许我错过了一些明显的东西,因为这是我第一次处理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": []
    }
]
}

1 个答案:

答案 0 :(得分:0)

我们最终使用Field对象的集合创建了一个合适的模型,然后视图动态地拉出给定页面的相关Field对象。然后我们创建了一个自定义模型绑定器来检查验证等等。