C# 转发到控制器的DateTime控件的动态数量
我创建了一个具有自己类的模型:C# 转发到控制器的DateTime控件的动态数量,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我创建了一个具有自己类的模型: public class VMRequest() { public int Id { get; set; } public List<Slot> Slots { get; set; } public class Slot() { public DateTime Date { get; set; } } } 但是在提交时,即使将VMRequest模型传递给控制器,视图控件上的更改也不会传递-我
public class VMRequest()
{
public int Id { get; set; }
public List<Slot> Slots { get; set; }
public class Slot()
{
public DateTime Date { get; set; }
}
}
但是在提交时,即使将VMRequest
模型传递给控制器,视图控件上的更改也不会传递-我不知道如何将标识符固定到每个控件
我相信这是可能的 每个元素都需要使用索引命名,以便绑定回模型。这里有一个很好的例子 简言之: 在for循环中使用razor组件应该可以像这样处理:
for (int i = 0; i < 3; i++)
@Html.TextBoxFor(m => m[i].Title)
@Html.TextBoxFor(m => m[i].Author)
@Html.TextBoxFor(m => m[i].DatePublished)
}
for(int i=0;i<3;i++)
@Html.TextBoxFor(m=>m[i].Title)
@Html.TextBoxFor(m=>m[i].作者)
@Html.TextBoxFor(m=>m[i].DatePublished)
}
将代码更改为:
@for(int x = 0; x < Model.Slots.Length;x++)
{
<div class="col-md-6">
<div class="form-group">
<label asp-for="@Model.Slots[x].Date" class="control-label"></label>
<input asp-for="@Model.Slots[x].Date" type="date" class="form-control" />
<span asp-validation-for="@Model.Slots[x].Date" class="text-danger"></span>
</div>
</div>
}
@for(int x=0;x
然后,返回的表单将是正确的。如果您使用
for
循环而不是foreach
循环,那么值将正确返回。是的,就是这样,我实际上觉得我以前做过,但现在忘记了@for(int i=0;i
将循环中的每个引用都作为Model.Slots[i].Date来完成,我刚刚根据一条注释完成了这项操作,但是是的,回答正确!
@for(int x = 0; x < Model.Slots.Length;x++)
{
<div class="col-md-6">
<div class="form-group">
<label asp-for="@Model.Slots[x].Date" class="control-label"></label>
<input asp-for="@Model.Slots[x].Date" type="date" class="form-control" />
<span asp-validation-for="@Model.Slots[x].Date" class="text-danger"></span>
</div>
</div>
}