Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Asp.net mvc 4 使用编辑器模板提交mvc模型可枚举的表单_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 使用编辑器模板提交mvc模型可枚举的表单

Asp.net mvc 4 使用编辑器模板提交mvc模型可枚举的表单,asp.net-mvc-4,Asp.net Mvc 4,我的模型视图视图设置有一个编辑器模板。我使用模板的视图简化为 @model IEnumerable<ViewSetup> @Html.EditorFor(s => s) 根据默认模型绑定,TradingPartner属性的值为null,因为html中的名称为: <input name="[0].TradingPartner.ID" type="hidden" value="1"/> 我需要的是只提交每个元素上的ViewSetup对象,而不是数组。如果我能删除

我的模型视图视图设置有一个编辑器模板。我使用模板的视图简化为

@model IEnumerable<ViewSetup>
@Html.EditorFor(s => s)
根据默认模型绑定,TradingPartner属性的值为null,因为html中的名称为:

<input name="[0].TradingPartner.ID" type="hidden" value="1"/>


我需要的是只提交每个元素上的ViewSetup对象,而不是数组。如果我能删除名称中的索引部分,那对我来说就行了。但是我不知道如何在表单提交时只获取ViewSetup对象。

我敢打赌,如果您将编辑器基于一个项目而不是一个项目列表,那么您将获得更大的灵活性

@model IEnumerable<ViewSetup>

@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner)
}
@model IEnumerable
@foreach(模型中的var项目)
{
@EditorFor(modelItem=>item.TradingPartner)
}

我也遇到了同样的问题,解决这个问题的方法是:

@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner, null, "")
}

编辑器的第三个属性为空将从对象中删除“[0]”。

否,但我有许多ViewSetup模型的属性。它比这更复杂,但我刚刚用上面的一个属性简化了。也许可以看看使用partials。每个部分都可以有一个模型,并使用子模型调用其他部分。但是,这会增加更多的冗长。我必须使用模板,因为我必须在我的应用程序的许多地方重复使用模板。是否有某种方法可以提交表单循环中的每个元素(我看到的唯一方法是不将索引添加到html名称中)…谢谢。如果TradingPartner的编辑器提交给接收贸易伙伴的控制器,那么您应该是好的,这将处理添加的索引。但是,您需要创建一个控制器方法,从帖子中获取TradingPartner。我不知道你的视图还有什么其他方面。我必须从一个可枚举列表中提交每个ViewSetup模型。每个视图设置都将以html格式提交。问题是由于html名称中的[0]未映射TradingPartner。它是空的。不知怎的,我不想把索引写在我的名字里。我不需要ViewSetup模型中的属性编辑器。
@model IEnumerable<ViewSetup>

@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner)
}
@foreach (var item in Model)
{
   @Html.EditorFor(modelItem => item.TradingPartner, null, "")
}