Я использую JsonForm для создания динамических c форм в моем базовом веб-приложении MVC. Я использую System.Text.Json.JsonSerializer.Serialize
в следующем коде в моей модели представления для создания простой формы с одним полем. Моя цель - в конечном итоге сохранить это json в базе данных и извлечь его оттуда.
public TestsViewModel GetFormControls1()
{
var myJsonModel = new
{
schema = new
{
client = new
{
type = "object",
title = "Client",
properties = new
{
forename = new
{
type = "string",
title = "Forename",
minLength = 3,
maxLength = 10,
}
}
}
},
form = new List<Object>
{
new {
key = "client.forename",
title = "Forename"
}
},
value = new
{
client = new
{
forename = "",
}
}
};
TestsViewModel homeVm = new TestsViewModel();
homeVm.FormControls = System.Text.Json.JsonSerializer.Serialize(myJsonModel);
return homeVm;
}
Приведенный выше код работает нормально и создает следующую схему json, которая затем используется для создания формы.
{
"schema": {
"client": {
"type": "object",
"title": "Client",
"properties": {
"forename": {
"type": "string",
"title": "Forename",
"minLength": 3,
"maxLength": 10
}
}
}
},
"form": [
{
"key": "client.forename",
"title": "Forename"
}
],
"value": {
"client": {
"forename": ""
}
}
}
Теперь мне нужно создать перечисление для моего json, чтобы в форме мог появиться выпадающий список для выбора пола. Однако я не могу сделать это с помощью кода c#. Может кто-нибудь помочь? Я хотел бы, чтобы мой код c# выдал следующий json (обратите внимание на две записи для пола в схеме и форме).
{
"schema": {
"client": {
"type": "object",
"title": "Client",
"properties": {
"forename": {
"type": "string",
"title": "Forename",
"minLength": 3,
"maxLength": 10
},
"gender": {
"type": "string",
"title": "Gender",
"enum": [
"male",
"female",
"alien"
]
}
}
}
},
"form": [
{
"key": "client.forename",
"title": "Forename"
},
{
"key": "client.gender",
"titleMap": {
"male": "Dude",
"female": "Dudette",
"alien": "I'm from outer space!"
}
}
],
"value": {
"client": {
"forename": ""
}
}
}
Я пытался использовать следующий код, но enum
- ключевое слово в c#, поэтому я получаю сообщение об ошибке.
gender = new
{
type = "string",
title = "Gender",
enum = "[male, female, alien]"
}
Также Enum = "[male, female, alien]"
производит "Enum": "[male, female, alien]"
вместо "enum": [ "male", "female", "alien" ]
У меня есть таблица поиска пола, которую я в конечном итоге буду использовать, чтобы произвести выше enum каким-то образом, поэтому любая идея относительно этого также будет полезна. Комментарий
UPDATE @ db c решает большую часть моей проблемы. Тем не менее, я все еще борюсь с производством titleMap json, если я пытаюсь отобразить строку в int.
var gender3 = new
{
type = "string",
title = "Gender",
titleMap = new List<string> { new string("1" + ":" + "Male"), new string("2" + ":" + "Female")}
};
Выше кода выдает
{
"type": "string",
"title": "Gender",
"titleMap": [
"1:Male",
"2:Female"
]
}
Однако мне нужны и 1, и Мужчины в своих двойных кавычках внутри {} вместо [], как показано ниже.
{
"type": "string",
"title": "Gender",
"titleMap": {
"1": "Male",
"2": "Female"
}
}