C# HTML BeginCollectionItem返回NULL
HTML.BeginCollectionItem不向控制器返回值。它在控制器中总是返回NULL。如果在另一个局部视图中有一个局部视图,我不确定是否有什么关系。下面是代码/视图的片段 ProductEditModel ProductEditView.cshtmlC# 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
@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>
}