c# - 如何在 C# blazer 中的 for 循环内绑定和保存/更新输入复选框
问题描述
任何机构都可以帮助我使用 C# blazor 将带有输入文本框的多个复选框值保存到 db 中吗?当我尝试单击任何复选框时,所有复选框已被选中,因为我只有一个对象,我无法弄清楚如何在循环中分离对象并将其单独保存到数据库中
我的代码是这样的:
@for (int i = 1; i
<=1 3; i++) { <div class="col-md-3 mb-3">
<div class="form-check">
<InputCheckbox class="form-check-input" @bind-Value="@testBenchIntilization.PT.PtSelected" /> @i<br />
</div>
</div>
<div class="col-md-8 mb-3">
<label for="testname" class="control-label">Limit</label>
<InputNumber for="testname" class="form-control" id="testname" placeholder="Test name" @bind-Value="@testBenchIntilization.PT.PtLimit" />
</div>
}
主类:
public class TestBenchIntilization
{
[Required]
public int TestId { get; set; }
public TestBenchPressureTransducer PT{ get; set; } = new TestBenchPressureTransducer();
}
子类:
public class TestBenchPressureTransducer
{
public int TestId { get; set; }
public DateTime TestDate { get; set; }
public string PtName { get; set; }
public bool PtSelected{ get; set; }
public float PtLimit { get; set; }
}
解决方案
您需要复制循环索引。例如,我必须复制到 iCopy。
如果你不复制它,那么值将是 3 = for 完成时的值。循环位于 lambda 表达式中。
要了解为什么https://github.com/dotnet/AspNetCore.Docs/issues/10768
这是基于您的示例的简化版本。
@page "/"
<EditForm Model="@data" OnValidSubmit="@submit">
@for (int i = 0; i < 3; i++)
{
int iCopy = i;
<div class="col-md-3 mb-3">
<div class="form-check">
<InputCheckbox class="form-check-input" @bind-Value="@data[iCopy].selected" /> @(iCopy+1)<br />
</div>
</div>
<div class="col-md-8 mb-3">
<label for="testname" class="control-label">Limit</label>
<InputNumber for="testname" class="form-control" id="testname" placeholder="Test name" @bind-Value="@data[iCopy].limit" />
</div>
}
<button type="submit">Submit</button>
</EditForm>
@(result)
@code{
public class Test
{
public bool selected;
public int limit;
};
string result = "";
Test[] data = new Test[3];
protected override void OnInitialized()
{
for (int i = 0; i < 3; i++)
data[i] = new Test();
}
void submit()
{
result = "";
for (int i = 0; i < 3; i++)
result += $"[{data[i].selected},{data[i].limit}],";
}
}
推荐阅读
- xml - 如何在 XSD 中为复合模式建模
- azure-functions - Azure Functions IsPastDue - 何时设置为 true?
- c++ - 将向量大小调整为大于 2^31 后的 std::length_error
- mongodb - mongodb在一个字符串中查找多个单词
- discord.py - 如何让您的不和谐机器人在激活之前“记住”消息?
- vba - 如何用逗号分隔列表框选择?
- python - 如何解决 IndexError:数组的索引过多
- c# - 使用 Microsoft Graph 进行 Exchange 集成(本地)C# 示例
- swagger - Swagger 中的关联数组 (OpenApi 3.0.0)
- ios - 在 Firebase 中存储切换按钮状态