MVC3部分视图和模型没有发回更改

本文关键字:模型 视图 MVC3 | 更新日期: 2023-09-27 18:10:45

我有一个模型,其中包含可以修改的项的集合。

我使用局部视图呈现集合,而局部视图又使用EditorForModel输出集合中每个元素的HTML。

@model Footy.Models.EventModel
    <h2>@Model.Team1Name vs @Model.Team2Name</h2>
    @using (Html.BeginForm("Index", "Event"))
    {
        @Html.HiddenFor(m => m.EventID)
        <h1>
            Team 1 Squad</h1>
        @Html.Partial("EventPlayers", Model.Team1Players);
        <h1>
            Team 2 Squad</h1>
   Html.RenderPartial("EventPlayers", Model.Team2Players);
        <input type="submit" value="Confirm Changes" />
    }

局部视图

@model IEnumerable<Footy.Models.PlayerModel>
@Html.EditorForModel()

PlayerModel视图

@model Footy.Models.PlayerModel
@Model.PlayerName @Html.DropDownListFor(p => p.ParticipationStatusID, new SelectList(Model.ParticipationTypes, "Key", "Value"))

它都正确地呈现,但是当用户单击输入时,控制器方法没有传递给模型中的子集合,例如model。Team1Players为空

我错过了什么?

编辑:生成的HTML是
    <form action="/Footy/Event/Index/1" method="post"><input data-val="true" data-val-number="The field EventID must be a number." data-val-required="The EventID field is required." id="EventID" name="EventID" type="hidden" value="1" />            
<h1>Team 1 Squad</h1>
      si <select data-val="true" data-val-number="The field ParticipationStatusID must be a number." data-val-required="The ParticipationStatusID field is required." name="[0].ParticipationStatusID"><option value="1">Team</option>
    <option value="2">Sub</option>
    <option value="3">Squad</option>
    </select>
    <h1>Team 2 Squad</h1>
 <input type="submit" value="Confirm Changes" />
 </form>

感谢

我认为这与这个问题有关,这个问题还没有答案:将数据从Ajax呈现的部分视图发回控制器

MVC3部分视图和模型没有发回更改

如果您检查已呈现的源,您可以检查已呈现的子模型输入的名称和id是否与模型层次结构相对应吗?

我相信您将需要EditorFor,以便使子模型正确地"命名空间"。

在EventModel视图中,使用这样的内容:

@Html.EditorFor(m => m.Team1Players, "EventPlayers")

然而,我不确定。我在使用MVC框架时遇到过类似的问题。

问题可能出在集合绑定上。

试着阅读这篇文章。它应该能让你对集合绑定有一些了解