与 ASP.NET Core 的模型绑定[重复]

2024-02-17

我正在尝试使用 asp.net core MVC 制作一个简单的 todo MVC 应用程序。我的计划是制作一个带有简单复选框的网页,并让用户能够使用表单更改状态。 表单显示正确,但控制器中的“模型绑定”不起作用。

我究竟做错了什么?

用户界面(图片) https://i.stack.imgur.com/MiLp9.png

风景:

@model List<Todo>

<form  asp-controller="Home" asp-action="ModifyTodo" method="post">

    <ul class="mdc-list">
        @for (var i = 0; i <  Model.Count; i++)
        {
            <li class="mdc-list-item">

                <input asp-for="@Model[i].Status" name="todos[@i].Status" >
                <input asp-for="@Model[i].Id" name="todos[@i].Id" value="@Model[i].Id" type="hidden">
                <input asp-for="@Model[i].Text" name="todos[@i].Text" value="@Model[i].Text" type="hidden">

                <label> @Model[i].Text</label>
            </li>
        }
    </ul>
    <input type="submit" value="submit">
</form>

我的控制器:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return GiveTodoView();
    }

    [HttpPost]
    public IActionResult ModifyTodo([FromForm] List<Todo> todos)
    {
        // Console.WriteLine(test);
        var temp = "Count: "+todos.Count;
        foreach (var todo in todos)
        {
            temp += todo.Status + " " + todo.Text + " <br />";
        }
        return Content(temp);
        //   return GiveTodoView();
    }

    private IActionResult GiveTodoView()
    {
        var manager = TodoManager.GetTotalManager();

        return View("Index", manager.GetTodos().ToList());
    }
}

Todo.cs

public class Todo
{
    public int Id;
    public bool Status;
    public string Text;
}

如何将表单中的所有待办事项返回到控制器的操作中ModifyTodo?

提前致谢!

Edit

Razor 生成的 html。我已经删除了不必要的标记

<form method="post" action="/Home/ModifyTodo">
    <ul class="mdc-list">
            <li class="mdc-list-item">

                <input name="todos[0].Status" type="checkbox" checked="checked" data-val="true" data-val-required="The Boolean field is required." id="z0__Status" value="true">
                <input name="todos[0].Id" value="0" type="hidden" data-val="true" data-val-required="The Int32 field is required." id="z0__Id">
                <input name="todos[0].Text" value="First test" type="hidden" id="z0__Text">
                <label>First test</label></li>
            <li class="mdc-list-item">

                    <input name="todos[1].Status" type="checkbox" data-val="true" data-val-required="The Boolean field is required." id="z1__Status" value="true">
                    <input name="todos[1].Id" value="0" type="hidden" data-val="true" data-val-required="The Int32 field is required." id="z1__Id">
                    <input name="todos[1].Text" value="second test" type="hidden" id="z1__Text">
                <label>second test</label></li>
    </ul>
</div>
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8GAD8c4qIkNEktrZwHPVewBTkkBNZ7RlAVcu7N2_sgbMy2O3FSRi_x5Nw1WNlXWqBhz_wNdeBYCj9oqnopS4fZxDgvjC5FGeCQ2jS3tS7IdXgwyAxPe6BnDhmOJDcK9fmqBdV8BcTC8qxrZEouj4RMU" />
<input name="[0].Status" type="hidden" value="false">
<input name="[1].Status" type="hidden" value="false">
</form>

Since todos是您要绑定的根对象的名称,您不需要在输入上使用其名称

<input asp-for="@Model[i].Status" name="[@i].Status" >

您还需要将它们从公共字段更改为公共属性

public class Todo
{
    public int Id { get; set; }
    public bool Status { get; set; }
    public string Text { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 ASP.NET Core 的模型绑定[重复] 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 服务器资源管理器不可用(VS2008Pro)

    最近我的 VS 2008 出现了一些问题 建议重新安装 为了确保重新安装能够解决我的问题 我手动卸载了与 VS 和 SQL Server 有关的所有内容 我安装了 2008 Express 版本 现在 当我重新安装 SQL Server 和
  • 在编译器中实现闭包

    我正在尝试设计一个伪汇编代码的基本编译器 但是 我不知道如何实现闭包 看来我需要将特定的寄存器值与每个 子例程 相关联 我考虑过使用堆栈 但它似乎又不够 似乎只有关联数组才能工作 但是如何在汇编中完成该操作或类似的操作呢 我选择尝试表示的示
  • 使用 Oscillator.connect() 和 Oscillator.disconnect() 方法在使用 Web Audio API 构建的应用程序中打开/关闭声音有多可行?

    我一直在尝试使用 Web Audio API 创建 88 键钢琴 计划是首先以适当的频率运行所有 88 个振荡器 然后使用Oscillator connect and Oscillator disconnect 按下和释放钢琴键时相应振荡器
  • 在 Axapta/Dynamics Axe 中的链接表上过滤

    我在 Axapta Dynamics Ax EmplTable 中有一个表单 它有两个数据源 EmplTable 和 HRMVirtualNetworkTable 其中第二个数据源 HRMVirtualNetworkTable 通过 延迟
  • Visual Studio Code 中的 Launch.json

    要在 Visual Studio Code 中开始调试 我必须生成 Launch json 文件 在 Visual Studio Code 自动生成文件后 我得到如下内容 version 0 2 0 configurations name
  • 我可以删除migrations目录中的django迁移文件吗

    我个人喜欢 django 因为它的 MVC 理念 但是 当我在版本 1 7 中运行 Django 迁移时 我在其中执行的每个迁移都存储在迁移目录中 如果我删除这些文件 它会在迁移时抛出错误 我是这样测试的 我创建了一个新的 Django 项
  • 在 BeautifulSoup 中匹配部分 id

    我在用着美丽汤 我必须找到任何参考 div 带有 id 的标签如 post 例如 div div div div 我努力了 html div div div div soupHandler BeautifulSoup html print
  • 在 CSS3 中重新启动动画:还有比删除元素更好的方法吗?

    我有一个 CSS3 动画 需要单击重新启动 这是一个显示还剩多少时间的栏 我使用scaleY 0 变换来创建效果 现在我需要通过将条恢复到scaleY 1 并让它再次转到scaleY 0 来重新启动动画 我第一次尝试设置 scaleY 1
  • 当 Knockout 更新值时,更改事件不会触发

    我有一个外部 javascript 库 它会触发文本区域的更改 格式化它等 但是 当 KnockoutJS 将值设置为文本区域时 不会触发更改事件 我的问题的简化小提琴 http jsfiddle net EZC9E 当 Knockout
  • 需要类型但无法导入桥接标头

    我正在开发一个包含 Swift 和 Objective C 代码的项目 它工作没有任何问题 直到我尝试在 Bridging Header 文件中导入 h 类 期望一个类型 在我试图导入它的课程中 导入桥接标头失败 Users sysadmi
  • 使用 XUnit 和 ASP.NET Core 1.0 进行依赖注入

    我正在尝试弄清楚如何使用 XUnit 进行依赖注入 我的目标是能够将我的 ProductRepository 注入到我的测试类中 这是我正在尝试的代码 public class DatabaseFixture IDisposable pri
  • 延迟 jquery 脚本直到其他所有内容都加载完毕

    我有一个 jquery 脚本 只有在页面上的其他所有内容 包括其他一些 javascript 我无法控制 完成其工作后才需要运行该脚本 我虽然也许有 document ready 的替代品 但我还没找到它 你可以有 document rea
  • call_user_func_array 将参数传递给构造函数[重复]

    这个问题在这里已经有答案了 我已经搜索了许多 Google 结果页面以及 stackoverflow 上的此处 但找不到似乎适合我的情况的解决方案 我试图构建的函数似乎只有最后一个障碍 该函数使用 call user func array
  • Yii 2.0 如何扩展核心类

    我想延长课程yii web 响应 所以我在文件夹中创建了一个新类 Response成分我尝试覆盖发送方法 namespace app components use Yii class Response extends yii web Res
  • Angular 6 @angular/pwa - sw 未成功提供清单 start_url

    我使用 Angular 6 和 Angular pwa 包构建了一个 PWA 我一直在尝试解决此问题 但无论我做什么 我都会收到 start url 错误 我努力了 使用绝对链接 确保 start url 在 SW 的范围内 sw 在主文件
  • Chrome 是否支持单个 javascript url 上的多个模块/sourceMappingURL

    我一直在尝试 Chrome 中的 Source Maps 功能 发现它不支持将单个 javascript 资源附加到包含多个模块以及一个连接在一起的脚本标记 sourceMappingURL评论分离each one 第一个映射已连接 我看到
  • RSpec Stubbing:按顺序返回

    我知道以下事情有效 返回一个参数 subject should receive get user choice choices choices to a 0 和一个序列 第一次调用时返回 0 第二次 退出 时返回 subject shoul
  • Google 登录但结果代码为 0

    我想为我的应用程序创建一个 Google 标志 但我的结果代码来自onActivityResult is 0 In my onCreate 方法我启动功能startSignInIntent 像这样 protected void onCrea
  • 如何使用 slf4j / log4j2 发送电子邮件通知?

    我研究了其他类似的问题 并进行了一些谷歌搜索来找到我的答案 但我的问题仍然没有答案 我仍然不熟悉其中一些是如何工作的 所以请耐心等待 我们的 maven pom xml 使用 slf4j 依赖项 我们的 log4j2 xml 文件如下所示
  • 与 ASP.NET Core 的模型绑定[重复]

    这个问题在这里已经有答案了 我正在尝试使用 asp net core MVC 制作一个简单的 todo MVC 应用程序 我的计划是制作一个带有简单复选框的网页 并让用户能够使用表单更改状态 表单显示正确 但控制器中的 模型绑定 不起作用