Мой AppDefinition.json выглядит так, когда я хочу визуализировать тип ввода:
Код: Выделить всё
{
"app": {
"name": "AppName",
"pages": [
{
"name": "UserDetailsForm",
"url": "/list",
"state": {
"firstName": {
"type": "string",
"value": ""
},
"lastName": {
"type": "string",
"value": ""
}
},
"layout": {
"type": "Linear",
"components": [
{
"type": "Input",
"props": {
"type": "text",
"placeholder": "First Name"
},
"style": {}
},
{
"type": "Input",
"props": {
"type": "text",
"placeholder": "Last Name"
},
"style": {
"color": "blue"
}
}
]
}
}
]
}
}
Код: Выделить всё
@{
var page = @Model.Pages[0];
}
function @page.Name () {
return (
@{
foreach (var Component in @page.Layout.Components) {
if (Component.Type == "Input") {
} else if (Component.Type == "Button") {
@Component.Label
}
}
}
);
}
export default @page.Name;
Я хочу добавить свойство стиля только к вводу Фамилия, а не к Имени вход. Однако Razor заставляет меня добавить атрибут стиля к обоим входным данным, что приводит к включению пустого атрибута стиля для входных данных "Имя".
Если я удалите атрибут style из JSON, Razor выдаст NullReferenceException, как показано ниже.
Код, выдающий ошибку
Код: Выделить всё
"layout": {
"type": "Linear",
"components": [
{
"type": "Input",
"props": {
"type": "text",
"placeholder": "First Name"
},
},
{
"type": "Input",
"props": {
"type": "text",
"placeholder": "Last Name"
},
"style": {
"color": "blue"
}
}
]
}

Вопросы:
- Это задуманное поведение Razor или я делаю что-то не так?
- Следует ли добавлять условие на странице template.razor перед отрисовкой стиля? Я пробовал несколько способов, например
Код: Выделить всё
@if(Component.Style) {}
Я использую шаблонизатор Scriban для достижения того же результата, и Scriban достаточно умен, чтобы не применять стиль к входным данным, когда стиль тег отсутствует в JSON. Основываясь на этом опыте, я рассматриваю возможность использования Scriban вместо Razor.
Пожалуйста, дайте мне знать, если я что-то упустил.
Ссылки: Razor Engine, Scriban
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/787 ... causing-nu