c# - MVC 5 集合未映射到模型
问题描述
我以前做过这个,但是当我无法让它发挥作用时,我不得不更新我的知识。
我基本上是在创建一个复选框列表。我已经复制了本指南:https ://exceptionnotfound.net/simple-checkboxlist-in-asp-net-mvc/
我完全无法从 a 那里取回物品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})。该路线似乎不是问题,因为该操作受到打击,并且其他表单值已正确映射。
我检查Request.Form
动作方法中开头的值。动作签名是相同的,除了一个是async Task<ActionResult>
,而另一个只是ActionResult
该表单包含名称为Checks[0].IsChecked
etc. 的所有复选框,最多为 count-1。
HTML 中没有一个复选框被禁用。
我还在测试项目中添加了 Autofac,以检查它是否以某种方式处理了模型绑定过程,但没有区别。
更新 我已经创建了一个新的控制器、一个新的模型和新的编辑器模板,除了模型名称之外,它们与原来的完全一样。
该模型是另一个模型的精确副本。
这个控制器/视图/编辑器模板按预期工作 - 但不是按预期工作,因为我确信问题仍然存在。
我改变了麻烦的控制器以使用新模型并且它工作......我不知道为什么,因为它们是相同的。我不必更改视图中的任何内容即可执行替换。
由于它们在内容上是相同的,所以我不知道可能是什么原因导致了这个问题。
解决方案
推荐阅读
- r - 在 R 中将高度从英尺 (6-1) 转换为英寸 (73)
- java - 我想使用 cameraX 为条形码创建自定义 PreviewView
- swiftui - SwiftUI:在初始化所有存储的属性之前使用“自我”
- typescript - 打字稿功能:参数后的“:”类型是什么意思以及为什么有些功能没有?
- javascript - 需要将表单字段转换为整数
- youtube-api - id list API 获取的 YT.videos 的 id 数量限制是多少?
- python - 如何在python中按日期对数组进行排序?
- c - 使用 scanf 直到 EOF 将值插入节点
- python - 使用 ffmpeg 和 python 将视频中的所有音频流提取到单独的音频文件中
- javascript - 如何在 Gatsby 中对 graphql 查询的过滤结果进行单元测试?