Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转发到控制器的DateTime控件的动态数量_C#_Asp.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

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>              
    }