表单列表如何使用Blazor执行此操作?
我有一个需要更新的对象列表表单列表如何使用Blazor执行此操作?,blazor,Blazor,我有一个需要更新的对象列表 @foreach (var s in fooList) { <EditForm Model="@s" OnValidSubmit="@HandleValidSubmit"> <tr> <td><InputText id="Name" @bind-Value="@s.Na
@foreach (var s in fooList)
{
<EditForm Model="@s" OnValidSubmit="@HandleValidSubmit">
<tr>
<td><InputText id="Name" @bind-Value="@s.Name" /></td>
<td><InputText id="Description" @bind-value="s.Description" /></td>
<td></td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
</EditForm>
}
我遇到的问题是,我得到的“名称在当前上下文中不存在”,因此,如何在foo列表中传递更新的名称?您需要从公共类型派生,否则.NET无法正确执行反射 注意资本V的@bind值 代码可能是这样的
@page "/"
@if (fooList != null)
{
@foreach (Common s in fooList)
{
<EditForm Model="s" OnValidSubmit="()=>HandleValidSubmit(s)">
<tr>
<td><InputText id="Name" @bind-Value="s.Name" /></td>
<td><InputText id="Description" @bind-Value="s.Description" /></td>
<td></td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
</EditForm>
}
}
@code
{
public class Common
{
public string Name;
public string Description;
}
public class Edit1 : Common
{
public string object1;
}
public class Edit2 : Common
{
public string object2;
}
List<Common> fooList = new List<Common>() { new Edit1() { Name = "t1" }, new Edit2() { Name = "t2" } };
private Task HandleValidSubmit(Common result)
{
// Do something with result value
return Task.CompletedTask;
}
}
@page/“
@if(傻瓜!=null)
{
@foreach(愚人中常见的s)
{
提交
}
}
@代码
{
公共类
{
公共字符串名称;
公共字符串描述;
}
公共类Edit1:公共
{
公共字符串object1;
}
公共类Edit2:公共
{
公共字符串object2;
}
List WOLDIST=new List(){new Edit1(){Name=“t1”},new Edit2(){Name=“t2”};
私有任务HandleValidSubmit(通用结果)
{
//用结果值做某事
返回Task.CompletedTask;
}
}
什么类型的s
?您的问题是尝试在s
上进行更新。for循环已从s
走到了一个端点,即null
。您需要获得EditForm
来告诉您正在提交哪条记录,如@Remi THOMAS在下面的回答中所示
@page "/"
@if (fooList != null)
{
@foreach (Common s in fooList)
{
<EditForm Model="s" OnValidSubmit="()=>HandleValidSubmit(s)">
<tr>
<td><InputText id="Name" @bind-Value="s.Name" /></td>
<td><InputText id="Description" @bind-Value="s.Description" /></td>
<td></td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
</EditForm>
}
}
@code
{
public class Common
{
public string Name;
public string Description;
}
public class Edit1 : Common
{
public string object1;
}
public class Edit2 : Common
{
public string object2;
}
List<Common> fooList = new List<Common>() { new Edit1() { Name = "t1" }, new Edit2() { Name = "t2" } };
private Task HandleValidSubmit(Common result)
{
// Do something with result value
return Task.CompletedTask;
}
}