如何将表单输入绑定到字典值

2023-12-27

我正在创建一个 ASP.NET core razor 页面 Web 应用程序,其中一个页面需要能够修改Dictionary<string, string>财产。

我试图修改的对象如下:

public class Element
{
    [Key]
    public string ID {get;set;}
    public Dictionary<string, string> Values = new Dictionary<string, string>(); 
}

我可以使用以下代码在页面上显示值:

<form method="POST">
    <ul>
        <li hidden="true">ID: <input asp-for="FocusedItem.ID"/></li>
        @for (int i = 0; i < Model.FocusedItem.Values.Count(); i++)
        {
            <li>@Model.FocusedItem.Values.ElementAt(i).Key: <input asp-for="@Model.FocusedItem.Values.ElementAt(i).Value"/></li>
        }
    </ul>
    <br />
    <input type="submit" value="Submit" />
</form>

pagemodel包含以下方法来处理post事件:

public void OnPost(Element FocusedItem)
{
}

“ID”属性已正确填充,但是“Values”属性的计数为 0(表单上的输入值未绑定到 Dictionaty)。如何解决这个问题?

还有一个额外的问题 - 如何向字典添加新元素?

编辑:代码- -cshtml:https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml -cs: https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml.cs https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml.cs


@MarkG 很接近,但实际的语法是:Values[N].Key and Values[N].Value, where N是你的索引。但是,由于您使用标签助手来生成字段,所以真正的问题是您使用ElementAt。模型表达式不能包含任意方法,因为无法绑定到类似的方法ElementAt在最终的 POST 处理中。相反,您必须使用索引语法,即[i]。但是,使用字典会出现问题,因为它无法按项目位置(仅键)进行索引。

老实说,我倾向于避免发布字典,因为它是非结构化数据。 99.99% 的情况下,将其分解为具有属性而不是键字典的类可能会更好。如果你坚持使用字典,你可以try将实际键值作为索引器传递:

@foreach (var key in Model.Values.Keys)
{
    <input asp-for="Values[key]" />
}

我个人没有尝试过,但我认为它应该有效。除此之外,我唯一的办法know作品是手动生成输入名称:

<input name="Values[@i].Key" value="@Model.Values.ElementAt(i).Key" />
<input name="Values[@i].Value" value="@Model.Values.ElementAt(i).Value" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将表单输入绑定到字典值 的相关文章

  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我

随机推荐

  • Android ListView 与简单适配器

    我创建ListView列出从服务器检索的一些数据的活动 这是列出Atm活动 public class ListAtmActivity extends ListActivity private static String url http 1
  • 在 C# 中创建 MS Teams 团队 - AddAsync 返回 null

    Context 我正在使用 C 中的 MS Graph API 创建新的 MS Teams 团队 My code var newTeam new Team DisplayName model DisplayName Description
  • 如何将两个 MySQL 列合并为一列?

    我想转换这个 MySQL 表 title1 title2 type qwe1 qwe2 3 asd1 asd2 7 PHP 中的此表 title type asd1 7 asd2 7 qwe1 3 qwe1 3 但我不知道如何按第一列正确排
  • History.js - 正确的实现

    我使用 JQuery Ajax 在名为 container 的 div 中加载网站上的内容 我必须有不同类型的链接 正常锚链接 JQuery 触发器 当单击特定 div 时触发事件 现在我想添加功能来支持后退和前进浏览器按钮以及书签功能 我
  • 如何加快 MongoDB 视图上的计数

    我一直在排查为什么我创建的 MongoDB 视图如此慢 该视图的目标是transactions集合 并返回具有openBalance大于0 我还运行一些额外的聚合阶段来按照我想要的方式塑造数据 为了加快视图的执行速度 它通过匹配视图聚合管道
  • 服务的任何公共方法的 AOP 切入点表达式

    什么是最简单的切入点表达式 它将拦截所有带有注释的bean的所有公共方法 Service 例如 我希望它会影响该 bean 的两个公共方法 Service public MyServiceImpl implements MyService
  • SVN对单个文件的权限

    SVN 是否可以为单个文件设置写权限 而存储库的其余部分都是只读的 另一种可能性是预提交挂钩脚本 http svnbook red bean com en 1 5 svn ref reposhooks pre commit html
  • 计算特定范围sql server的记录数

    我正在尝试编写一个查询来根据多个不同范围来计算记录数 我成功使用了union 但我觉得有更好的方法来做到这一点 这是我所做的 select count col1 as range1 from tbl1 where col1 lt 15000
  • 将 IOS 应用程序从一个帐户的 Testflight 转移到另一个帐户

    App is 未发表在 App Store 上 但通过以下方式分发给测试人员试飞在以前的帐户上 现在我必须将应用程序转移到新帐户 具有相同的捆绑包标识符 我可以将其放置在具有相同捆绑包标识符的新帐户中吗 转移应用程序的程序是什么 因为它在
  • 如何格式化 MongoEngine PointField 的数据

    所以我想用mongodb中的位置数据做一些实验 所以我写了一些python代码来生成一些测试数据 不幸的是 文档位于http docs mongoengine org apireference html mongoengine fields
  • 获取应用程序共享意图的包名称

    我想获取创建共享意图的应用程序名称或其包名称 我正在制作通过意图接收共享数据的应用程序 如何获取创建者应用程序的包名称 类似于 intent getSourceBackageName EDIT 我不确定我的问题是否清楚 但我需要找出调用我的
  • Git clean 排除嵌套子目录

    我在使用 git clean 和排除嵌套目录选项时遇到问题 我想从存储库中清除所有未提交的文件 不包括vendor bundle为了 我的测试报告如下 debugg dir git file txt not commited file no
  • Javascript整数从零开始[重复]

    这个问题在这里已经有答案了 我有一个关于 javascript 如何解析以零开头的整数 例如银行帐号 的问题 下面是来自 Chrome 开发工具的简单示例 var zeroTest 022 undefined zeroTest 18 为什么
  • R.java 无法为 Android 库应用程序正确生成

    我创建了一个简单的 Android 库应用程序 其中只有 1 个包含 TextView 的活动 它工作正常 但是当我将其标记为库并在另一个应用程序中引用时 当我尝试使用 findViewById R id welcome textview
  • 使用 env('APP_ENV')、config('app.env') 或 App::environment() 获取应用程序环境有什么区别?

    使用上有什么区别env APP ENV config app env or App environment 获取应用程序环境 我知道env APP ENV 愿意 ENV config app env 读取配置并App environment
  • 在 Spring Boot 中为 Undertow 启用 HTTP 2.0

    我想知道如何使用 Spring Boot 为 Undertow 启用 HTTP 2 0 我监控了该协议 目前 HTTPS 使用的是 1 1 有什么财产可以用吗 或者我应该使用此选项创建一个 EmbeddedServletContainerF
  • Python isnumeric 函数仅适用于 unicode

    我正在尝试使用以下命令检查字符串是否为数字isnumeric功能正常 但结果并不如预期 该函数仅在它是 unicode 字符串时才起作用 gt gt gt a u 1 gt gt gt a isnumeric True gt gt gt a
  • ajax 自动完成扩展器不起作用

    我在文本框中有一个自动完成扩展器 它将记录显示为数据库中的列表 但是当我单击文本框并开始输入任何内容时 却没有发生任何事情 我的html代码是
  • Java for循环优化

    我用 java for 循环做了一些运行时测试 并发现了一个奇怪的行为 对于我的代码 我需要原始类型 如 int double 等 的包装对象来模拟 io 和输出参数 但这不是重点 只要看我的代码即可 具有字段访问的对象如何比原始类型更快
  • 如何将表单输入绑定到字典值

    我正在创建一个 ASP NET core razor 页面 Web 应用程序 其中一个页面需要能够修改Dictionary