MVC 5集合未映射到模型

时间:2018-10-04 20:59:15

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

我以前已经做过,但是当我无法使它起作用时,必须重新整理我的知识。

我基本上是在创建复选框列表。我转载了本指南:https://exceptionnotfound.net/simple-checkboxlist-in-asp-net-mvc/

我完全无法从HttpPost取回物品,也无法理解原因。 HTML看起来不错,具有ID和我期望的名称,“ Checks_0__IsChecked”,“ Checks [0] .IsChecked”等。

如果所有方法均失败,请尝试找出问题-因此,我创建了一个全新的Web应用程序,并复制了我的复选框模型,编辑器模板并创建了相同的“创建”方案-令我惊讶的是如期工作

查看包含相同键/值对的表单值(Request.Form),并正确映射了模型。

关于可能是什么问题或如何确定原因的任何建议?

复选框模型的编辑器模板:

@model CheckBoxViewModel

<div class="form-check">
    @Html.HiddenFor(model => model.Id)
    @Html.HiddenFor(model => model.IsDisabled)
    @if (Model.IsDisabled)
    {
        @Html.CheckBoxFor(model => model.IsChecked, new { @class = "form-check-input", @disabled = "disabled" })
    }
    else
    {
        @Html.CheckBoxFor(model => model.IsChecked, new { @class = "form-check-input" })
    }
    @Html.LabelFor(model => model.IsChecked, Model.Text, new { @class = "form-check-label" })
</div>

模型的编辑器模板:

@model ScheduledTriggerViewModel
@Html.EditorFor(model => model.Checks)

视图:

@model ScheduledTriggerViewModel

@{
    ViewBag.Title = "Create";
}

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.EditorForModel()
    <button type="submit">Create</button>
}

编辑 路由配置与其他配置相同,只是附加路由(Debug / Logs / {year} / {month})位于第一位。由于操作被击中,并且似乎正确映射了其他表单值,因此路线似乎不是问题。

我首先在action方法内部检查Request.Form值。动作签名是相同的,除了一个是async Task<ActionResult>而另一个是ActionResult

该表单包含名称为Checks[0].IsChecked等的所有复选框,最多为count-1。

HTML中所有复选框均未禁用。

我还已经将Autofac添加到测试项目中,以检查它是否以某种方式处理了模型绑定过程,但这没什么区别。

更新 我创建了一个新的控制器,一个新的模型和新的编辑器模板,除了模型名称外,它们与原始模板完全相同。

该模型是其他模型的精确副本。

此控制器/视图/编辑器模板按预期工作,但按预期工作,因为我确定问题仍然存在。

我将麻烦的控制器更改为使用新模型,并且它起作用了……我不知道为什么,因为它们是相同的。我不必更改视图中的任何内容即可执行替换。

由于它们的内容相同,所以我对造成此问题的原因一无所知。

0 个答案:

没有答案