【问题标题】:MVC3 Partial View and Model not posting back changesMVC3 部分视图和模型不回发更改
【发布时间】:2011-10-07 12:58:55
【问题描述】:

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

我使用 Partial View 渲染集合,而 Partial View 又使用 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()

玩家模型视图

@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>

谢谢

我觉得和这个问题有关,目前还没有答案:Posting data back to a controller from a Partial View rendered by Ajax

【问题讨论】:

  • 很难说 - 您可以在浏览器中查看此页面并提交生成的 HTML(在浏览器中显示源代码或类似内容)吗?

标签: c# asp.net-mvc-3


【解决方案1】:

如果您检查渲染的源代码,您能否检查渲染的子模型输入的名称和 ID 是否与模型层次结构相对应?

我相信您需要EditorFor 才能使子模型正确“命名空间”。

所以在 EventModel 视图中,使用如下内容:

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

但是我不确定。我在使用 MVC 框架时也遇到过类似的问题。

【讨论】:

  • 是的,就是这样。此外,我必须在部分视图中为用户 ID 添加一个新的隐藏字段,这样我就知道我必须使用新状态更新哪个玩家。好东西 - 谢谢!
【解决方案2】:

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

尝试阅读this post。它应该让您对集合绑定有所了解

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多