2

我正在使用 Dictionary<string,string> 来存储一些选项,键是选项的名称,并且您猜该值是对应选项的值。

在我的剃刀文件中,我有这段代码:

@foreach (KeyValuePair<string, string> option in templates.templatesList[SelectionValue])
{
    <tr>
        <td>@option.Key</td>
        <td><input type="text"/></td>
    </tr>
}

我正在寻找的是将文本输入的值存储到我的字典中的正确值中,遗憾的是我们不能使用@bind = @option.Value。

4

1 回答 1

5

我对下一个谷歌员工的解决方案:

绑定值的另一种方法是使用@onchange 选项,如下所述:https ://docs.microsoft.com/en-us/aspnet/core/blazor/components/data-binding?view=aspnetcore-3.1

所以,我改变了代码如下:

在剃刀文件中:

@foreach (KeyValuePair<string, string> option in templates.templatesList[SelectionValue])
{

    <tr>
        <td><label>@option.Key</label></td>
        <td><input type="text" @onchange="@((ChangeEventArgs __e) => changeOption(__e,option.Key))" /></td>
    </tr>

}

public void changeOption(ChangeEventArgs __e, string key)
{
    templates.changeValue(SelectionValue, key, __e.Value.ToString());
}

在我的对象类(模板)中

public void changeValue(string template, string option, string value)
    {
        this.templatesList[template][option] = value;
    }

我不知道这样做是否最干净,但它完美地完成了这项工作。

于 2020-07-08T15:05:28.963 回答