Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# HTML BeginCollectionItem返回NULL_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# HTML BeginCollectionItem返回NULL

C# HTML BeginCollectionItem返回NULL,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,HTML.BeginCollectionItem不向控制器返回值。它在控制器中总是返回NULL。如果在另一个局部视图中有一个局部视图,我不确定是否有什么关系。下面是代码/视图的片段 ProductEditModel ProductEditView.cshtml @foreach(模型中的ProductAssetAudioEditModel音频。ProductAssetAudio) { Html.RenderPartial(“_ProductAssetAudioRow”,音频); } _Pro

HTML.BeginCollectionItem不向控制器返回值。它在控制器中总是返回NULL。如果在另一个局部视图中有一个局部视图,我不确定是否有什么关系。下面是代码/视图的片段

ProductEditModel ProductEditView.cshtml

@foreach(模型中的ProductAssetAudioEditModel音频。ProductAssetAudio)
{
Html.RenderPartial(“_ProductAssetAudioRow”,音频);
}
_ProductAssetUdioRow.cshtml
@使用(Html.BeginCollectionItem(“ProductAssetAudios”))
{
....
@foreach(Model.ProductAssetResources中的var资源)
{
Html.RenderPartial(“_ProductAssetAudioResource”,资源);
}
.....
}
_产品资源
@使用(Html.BeginCollectionItem(“ProductAssetResources”))
{
@Html.HiddenFor(m=>Model.ProductAssetResourceId)
@Html.HiddenFor(m=>Model.ProductAssetId)
@if(Model.ElectronicFileId.HasValue)
{
@Html.HiddenFor(model=>model.ElectronicFileId)
@ActionLink(Model.ElectronicFile.FileName,“详细信息”,“文件”,新的{id=Model.ElectronicFileId,area=“Edi”},null);
}
@EditorFor(c=>Model.TrackTitle)
}
在控制器中,ProductAssetResources为空,即使编辑页面正确绑定属性进行编辑

我不确定我在这里错过了什么


-Alan-

BeginCollectionItem
将不适用于嵌套集合。另一个基于
BeginCollectionItem
的帮助程序似乎适合嵌套列表(未测试)-请参阅,您是否在视图中动态添加和删除集合项?(在这种情况下,您实际上不需要
BeginCollectionItem
 public class ProductEditModel
    {
        // Product details displayed on edit form
        public Product ProductModel { get; set; }
        public IList<ProductAssetAudioEditModel> ProductAssetAudios { get; set;}
    }
 public class ProductAssetAudioEditModel
 {
        public int ProductId { get; set; }
        public int? ProductAssetId { get; set; }
        public virtual IList<ProductAssetResourceEditModel> ProductAssetResources { get; set; }
}
public class ProductAssetResourceEditModel
    {
        public int? ProductAssetResourceId { get; set; }
        public int ProductAssetId { get; set; }
        public int ResourceNumber { get; set; }
        public int? ElectronicFileId { get; set; }
        public ElectronicFile ElectronicFile { get; set; }
    }
<div id="audio">
    @foreach (ProductAssetAudioEditModel audio in Model.ProductAssetAudios)
    {
        Html.RenderPartial("_ProductAssetAudioRow", audio);
    }
</div>
 @using (Html.BeginCollectionItem("ProductAssetAudios"))
 {
    ....
    <tbody>
        @foreach (var resource in Model.ProductAssetResources)
        {
           Html.RenderPartial("_ProductAssetAudioResource", resource);    

        }
    </tbody>
    .....
  }
@using (Html.BeginCollectionItem("ProductAssetResources"))
 {
        @Html.HiddenFor(m => Model.ProductAssetResourceId)
        @Html.HiddenFor(m => Model.ProductAssetId)
        <td>
            @if (Model.ElectronicFileId.HasValue)
            {
                @Html.HiddenFor(model => model.ElectronicFileId)
                @Html.ActionLink(Model.ElectronicFile.FileName, "Details", "File", new { id = Model.ElectronicFileId, area = "Edi" }, null);
            }
        </td>
        <td>
                @Html.EditorFor(c => Model.TrackTitle)
        </td>
}