0

所以想象一下:

有一个视图。有一个具有此视图的模型,格式如下:

Id
List<Food>

在每种食物中,有:

Id
Name
List<Ingredients>

每种成分包含:

Id
Name
Qty

这是 1 个模型。

我有一个包含此模型的视图。然后我有一个局部视图,它接收列表并将其呈现在屏幕上。但是,当提交表单时(按钮位于主视图上),数据无法绑定/未显示在模型中。

能够将数据绑定回来的正确方法是什么?

当我把整个东西放在主视图本身时它确实有效,但由于可重用性的原因,将它放在部分视图中是有意义的,所以我可以将它“拖放”到任何页面并传递数据。

部分视图包含以下内容:

@model List<FoodProject.Web.Models.FoodViewModel>

谢谢

更新

我尝试使用 EditorTemplate,它似乎几乎尊重模型绑定约定,就像使用 Html.Partial 之前没有这样做一样。那是产生类似的东西:

[0].PropertyName

代替:

ModelName[0].PropertyName

模板编辑器几乎就在那里,但给了我:

ModelName.[0].Id

我相信这就是为什么在发布时,我在模型集合中返回 null 我怎样才能让它尊重模型绑定?我哪里错了?

4

1 回答 1

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" />
}
于 2013-09-12T01:35:58.697 回答