Цель
При наличии списка меток (и шаблона строки усов или другого стиля) я хочу динамически создать некоторые поля ввода, а затем заменить там, где параметр существует в шаблоне, с двухсторонней привязкой о том, что находится в поле ввода. Я могу создать поля ввода, но понятия не имею, как я могу подставить их значения в шаблон (или возможно ли это даже в Blazor).
Пример
public class TemplateService
{
private List<NameValuePairs> _labels = new List<NameValuePairs>
{
new NameValuePairs(){Name="Name", Value="John"},
new NameValuePairs(){Name="Age", Value="27"},
new NameValuePairs(){Name="Height", Value=""},
new NameValuePairs(){Name="Hair Colour", Value=""},
};
public Task<Template> GetTemplateByIdAsync(int id)
{
Template t = new Template() { Labels = _labels, Text = @"Hi, my name is {{Name}}. I am {{Age}} years old" };
return Task.FromResult(t);
}
}
@inject TemplateService TemplateService
<h3>Text Templates</h3>
@if (template == null)
{
<p><em>Loading...</em></p>
}
else
{
@foreach (var label in template.Labels)
{
<label>
@label.Name :
<input @bind-value="label.Value" @bind-value:event="oninput" />
</label>
}
<h4>Model</h4>
@foreach (var l in template.Labels)
{
<p>@l.Value</p>
}
<h4>Interpolated</h4>
//HERE I WANT TO DISPLAY A RESULT OF template.text WHEREBY {{Name}} WOULD BE SUBSTITUTED WITH JOHN IN THIS CASE, AND WOULD CHANGE AS THE INPUTBOX FOR NAME IS TYPED IN
}
@code {
private Template template;
protected override async Task OnInitializedAsync()
{
template = await TemplateService.GetTemplateByIdAsync(1);
}
}
Это интерполированный бит в представлении, с которым я застрял. У меня есть контроль над службой, поэтому я подумал о замене {{Age}} на функцию, подобную @FindValueForName ("Age"), но не уверен, что это можно вставить как исполняемый код вместо литеральной строки. Любые мысли о том, как это может быть достигнуто каким-либо образом?