想象一下:
有一个视图。 这个视图的模型有以下形式:
Id
List<Food>
每个食物中都有:
Id
Name
List<Ingredients>
每种成分包含:
Id
Name
Qty
这是一个型号。
我有一个视图,它接受了这个模型。 然后我有一个局部视图,它接受列表并在屏幕上呈现它。 但是,当提交表单时(按钮位于主视图上),数据无法绑定/未显示在模型中。
能够将数据绑定回来的正确方法是什么?
当我把整个事情放在主视图本身但是由于可重用性原因时,它确实有效,因此在部分视图中使用它是有意义的,所以我可以在任何页面上“删除”它并传递数据
部分视图包含:
@model List<FoodProject.Web.Models.FoodViewModel>
由于
更新
我尝试使用EditorTemplate,似乎几乎尊重模型绑定约定,就像之前使用Html.Partial一样。那产生的东西就像:
[0].PropertyName
而不是:
ModelName[0].PropertyName
模板编辑器几乎就在那里,但是给了我:
ModelName.[0].Id
我相信这就是为什么在发布时,我会在模型集合中获得null 我怎样才能让它尊重模型绑定?我哪里错了?
答案 0 :(得分:1)
你应该接近编辑模板,因为这对我有用。我会展示我的例子,也许它会帮助你看出你的错误。
模特:
public class TestModelA
{
public List<TestModelB> PropA { get; set; }
}
public class TestModelB
{
public string PropB { get; set; }
}
位于 Views / Shared / EditorTemplates 中的编辑模板( TestModelB.cshtml ):
@model MvcTest.Models.TestModelB
@Html.EditorFor(m => m.PropB)
主要观点:
@model MvcTest.Models.TestModelA
@using (Html.BeginForm())
{
@Html.EditorFor(m => m.PropA)
<input type="submit" value="Submit" />
}