首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不使用FormsCollection的情况下拥有两个不同的ViewModels并将数据从两者提交到控制器?

在不使用FormsCollection的情况下,可以通过以下步骤拥有两个不同的ViewModels并将数据从两者提交到控制器:

  1. 创建两个不同的ViewModels,分别表示两个不同的数据模型。每个ViewModel应该包含与其对应的视图中的表单字段相匹配的属性。
  2. 在视图中使用@model指令分别指定两个ViewModels,确保每个表单字段都与相应的ViewModel属性绑定。
  3. 在控制器的POST方法中,将两个ViewModels作为参数进行接收。可以使用模型绑定来自动将表单数据填充到ViewModels中。
  4. 在控制器的POST方法中,将两个ViewModels作为参数进行接收。可以使用模型绑定来自动将表单数据填充到ViewModels中。
  5. 注意:确保表单中的字段名称与ViewModels中的属性名称相匹配,以便模型绑定能够正确工作。
  6. 在视图中的表单中使用<form asp-action="Submit" method="post">指定表单的提交目标为控制器的Submit方法。
  7. 在视图中的表单中使用<form asp-action="Submit" method="post">指定表单的提交目标为控制器的Submit方法。

这样,当用户提交表单时,控制器的Submit方法将接收到两个ViewModels,并可以访问它们中的属性来处理数据。

对于以上问题中提到的名词"FormsCollection",它是ASP.NET MVC中的一个类,用于在控制器中接收表单数据。但是在现代的ASP.NET Core中,推荐使用ViewModels和模型绑定来处理表单数据,而不是直接使用FormsCollection。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ViewModels 简单入门

一个简单例子 分三步骤来设置和使用ViewModel: 通过创建一个扩展 ViewModel 类来UI控制器中分离出你数据 建立你 ViewModel 和UI控制器之间通信 在 UI 控制器使用...此外,ViewModels也不应包含包含对UI控制器Views)引用元素,因为这将创建对Context间接引用。...之所以这样做是因为,ViewModel 比 UI控制器生命周期长,比如你旋转一个Activity三次,会得到三个不同Activity实例,但ViewModel只有一个。...第三步:在 UI 控制器使用 ViewModel 要访问或更改UI数据,可以使用ViewModel中数据。...这使得数据可以在屏幕旋转等配置变化情况下得以保存。 ViewModels将UI实现与 App 数据分离开来。

1.2K70

ViewModels and LiveData- Patterns + AntiPatterns

视图通常没有单元测试(除非你使用Robolectric),所以代码行数越少越好。视图应该只知道如何显示数据并将用户事件发送到ViewModel(或Presenter)。这就是所谓被动视图模式。...建议有一个单独存储库类作为处理这种复杂性单一入口。 如果你有多个非常不同数据模型,可以考虑添加多个存储库。...img 你可以把数据包装在一个有状态和其他元数据错误信息)类中。...在repository中,你可以使用WeakReference,也可以使用事件总线(两者都容易被滥用,甚至被认为是有害)。...Extending LiveData LiveData最常见用例是在ViewModels使用MutableLiveData,并将它们作为LiveData公开,使它们观察者那里不可改变。

1.1K30
  • ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    每一种都会存储 activity 中使用不同数据: 本地持久化是用于存储当打开或关闭 activity 时所有你不想丢失数据。 举例: 包含了音频文件和元数据所有音乐对象集合。...当用户搜索音乐时候 — 任何数据库为 UI 控制器加载复杂音乐数据应该马上存入 ViewModel。你也应该将搜索查询本身存入 ViewModel。...当 activity 被创建时候 — 可能出现三种不同方式: Activity 是第一次被创建:在这种情况下,onSaveInstanceState()方法中 bundle 里是没有数据,ViewModel...ViewModel 与其他架构组件 LiveData 和 Room 一起使用可以替代 Loader。ViewModel 保证配置更改后数据丢失。LiveData 保证 UI 与数据同步更新。...他们为应用其他部分提供了一套干净 API。当数据更新时他们知道哪里获取数据以及调用哪个 API。你可以把他们当做是不同数据源(持久模型、web service、缓存等)之间协调员。”

    1K20

    ViewModel:持久化、onSaveInstanceState()、UI 状态恢复和 Loader

    每一种都会存储 activity 中使用不同数据: 本地持久化是用于存储当打开或关闭 activity 时所有你不想丢失数据。 举例: 包含了音频文件和元数据所有音乐对象集合。...当用户搜索音乐时候 — 任何数据库为 UI 控制器加载复杂音乐数据应该马上存入 ViewModel。你也应该将搜索查询本身存入 ViewModel。...当 activity 被创建时候 — 可能出现三种不同方式: Activity 是第一次被创建:在这种情况下,onSaveInstanceState()方法中 bundle 里是没有数据,ViewModel...一些使用 ViewModels 、LiveData 为加载数据方法: 在这篇文章中,Ian Lake 概述了如何使用 ViewModel 和 LiveData 来代替 AsyncTaskLoader。...他们为应用其他部分提供了一套干净 API。当数据更新时他们知道哪里获取数据以及调用哪个 API。你可以把他们当做是不同数据源(持久模型、web service、缓存等)之间协调员。”

    3.8K30

    【ASP.NET Core 基础知识】--MVC框架--Models和数据绑定

    return View(); } 在这个例子中,ProcessRequest 方法同时接收表单数据和查询字符串数据。 这些例子展示了如何在控制器动作方法中使用数据绑定特性,从不同来源获取数据。...这使得可以在不使用JavaScript情况下进行一些简单客户端验证。...-- form elements --> Ajax验证: 使用Ajax技术,可以在刷新整个页面的情况下向服务器发送验证请求。这使得可以在用户填写表单同时异步地验证输入数据。...如果验证失败,会将用户重定向回原始表单页面,并显示相应错误消息;如果验证成功,用户将被重定向到 Success 页面。 这个简单例子涵盖了基本模型和绑定概念,以及如何在控制器和视图中使用它们。...有效使用ViewModels使用ViewModels来传递数据给视图,而不是直接将实体模型传递给视图。这有助于防止过多数据暴露给前端,同时也能更好地适应视图需求。

    60210

    七天学会ASP.NET MVC(七)——创建单页应用

    实验33——创建单页应用 1—安装 实验33中,不再使用已创建好控制器和视图,会创建新控制器及视图,创建新控制器和视图原因如下: 1. 保证现有的选项完整,也会用于旧版本与新版本对比 2....,在任何情况下,可视作简单使用。...Controllers—只能保存在Controller 文件夹,但是这不是大问题,MVC4开始,控制器路径不再受限。现在可以放在任何文件目录下。...解决方案: 通用数据类型 由于这两种技术都支持int,float等等数据类型,尽管他们存储方式,大小不同,但是在行业总有一种数据类型能够处理任何数据,称之为最兼容数据类型即字符串类型。....net中复杂数据通常指的是类和对象,这一类数据,.net与其他技术传递复杂数据就意味着传类对象数据JavaScript给其他技术传复杂类型数据就是JavaScript对象。

    4.3K60

    由浅入深,详解ViewModel那些事

    相应,我们数据在没有额外处理情况下,往往也会被初始化,然后在界面重启时重新加载。 但如果当前页面需要维护某些状态不被丢失呢,比如 选择、上传状态 等等? 此时问题就变得棘手起来。...两者不同点在于,后者只能创建 空构造函数 ViewModel ,而前者没有这个限制。...如果当前已创建,则直接使用;反之则调用我们 ViewModel工厂 create() 方法创建新 ViewModel。 创建完成后,并将其保存到 ViewModelStore 中。...() : 而后者使用了 LegacySavedStateHandleController 控制器去创建: 总结: 上述流程中,两者大致是一样,都需要先调用 consumeRestoredStateForKey...结语 在本篇中,我们 ViewModel 背景开始,再到 ViewModel 与 SavedStateHandle 使用方式,最后又从源码层级分析了两者具体流程,从而较完整解析了 ViewModel

    81840

    Android面试题之Kotlin Jetpack三大核心组件

    ViewModel 和 LiveData 是 Android Jetpack 组件库中两个核心组件,它们能帮助开发者更有效地管理 UI 相关数据,并且能够在配置变更(屏幕旋转)时保存和恢复 UI...用于ViewModel数据返回时通知View更新,是ViewModel和View之间桥梁 那么如何在 Kotlin 中正确优雅地使用 ViewModel 和 LiveData 呢。...在 Fragment 中使用 ViewModel 如果在 Fragment 中使用 ViewModel,可以使用 viewModels 或 activityViewModels: import android.os.Bundle...Lifecycle Jetpack 组件中 Lifecycle 是一个用于管理和观察 Android 组件( Activity、Fragment)生命周期库。...、 LiveData,可以实现数据生命周期感知,并且在配置变更(设备旋转)时也能保持 UI 状态。

    15610

    操作系统中任务调度 & CPU 内存缓存一致性问题

    但是CPU怎么及时响应硬件来请求呢? 解决方案:中断机制。CPU有一个引脚就是触发中断。 1、为了接入不同通常会有中断控制器,不同硬件连接到中断控制器上,每个硬件中断有一个中断编号IRQ。...举个例子,假设一个程序需要从内存中加载指令并读取一个值,系统只有一个CPU,拥有较小缓存(64KB)和较大内存。...程序第一次读取数据时,数据在内存中,因此需要花费较长时间(可能数十或数百纳秒)。处理器判断该数据很可能会被再次使用,因此将其放入CPU缓存中。如果之后程序再次需要使用同样数据,CPU会先查找缓存。...带缓存单CPU ? 两个有缓存CPU共享内存 事实证明,多CPU情况下缓存要复杂得多。 例如,假设一个运行在CPU 1上程序内存地址A读取数据。...3、假设这时操作系统中断了该程序运行,并将其交给CPU 2,重新读取地址A数据,由于CPU 2缓存中并没有该数据,所以会直接内存中读取,得到了旧值D,而不是正确值D'。

    95410

    加密 K8s Secrets 几种方案

    问题来了 作为 DevSecOps 管理员,您显然面临着两个挑战: 1.如何加密和管理集群外敏感数据,即在构建和部署阶段进入集群之前?2.如何在集群内运行应用程序时保护敏感数据安全?...小结 上面这两种方法都适用于使用非对称加密技术对机密文件进行加密。两者都提供了在敏感数据作为 Secrets 部署到集群之前对其进行解密方法。...不过,正如你所看到,加密数据一旦进入集群,就会在使用前被解密。因此,这基本上只解决了部分问题。接下来,我们需要看看如何在群集中保护这些数据安全。让我们看看在集群上加密数据不同选项。...创建加密 EBS 卷并将其附加到支持实例类型时,以下类型数据将被加密:•加密卷内静态数据•卷和实例之间移动所有数据加密卷创建所有快照•从这些快照创建所有卷2.Azure: 为连接到 Azure...与上述特定提供商引入 Secrets 内容 sidecar 解决方案不同,SSCSI 驱动程序可以配置为多个不同 Secret Provider 检索 Secrets 内容。

    87420

    C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①

    名称转换基于使用正则表达式模式匹配规则。执行转换时,将按顺序计算所有已注册规则。默认情况下,NameTransformer返回所有匹配规则生成结果名称。...第一个参数中“$”表示模式必须在源字符串末尾匹配。如果“模型”存在于其他任何地方,则模式匹配。...捕获组可以示例中所示进行嵌套,以便“nsfull”捕获完整名称空间,“nsroot”、“nsstem”和“nsleaf”捕获该名称空间各个组件。...如果需要“交换”任何一个单独组件,则可以使用单独组件。 上面示例中捕获组“后缀”对以“ViewModels”结尾名称进行模式匹配。...使用此捕获组主要原因是防止子字符串“ViewModels”在“basename”组中被捕获,在大多数情况下,这是字符串转换一部分。

    1.8K20

    「无服务器架构」Openwhisk 系统架构概览

    事件示例包括数据库记录更改,超过特定温度IoT传感器读数,将新代码提交到GitHub存储库或来自Web或移动应用程序简单HTTP请求。...在这种情况下,将检查用户是否存在于OpenWhisk数据库中,并检查该用户是否有权调用动作myAction,我们假设该动作是用户拥有的命名空间中动作。...在我们特定情况下,由于手头有一个基于Node.js操作,Invoker将启动一个Node.js容器,myAction注入代码,不带任何参数运行它,提取结果,保存日志并销毁再次使用Node.js容器...在我们特定情况下,Invoker操作中获取返回JSON对象,获取Docker编写日志,将它们全部放入激活记录中并将其存储到数据库中。...系统不同阶段。

    2.1K10

    唯一可行 iOS 架构

    Model 是“数据”。Controller 是它们之间中介。它从 Model 获取数据并在 View 上显示给用户,同时在 View 上处理用户操作并将其传输到 Model。 看起来很好。...因为除了视图和数据外,还有很多不同逻辑,这显然应该由 Controller 完成。 Controller 负责管理其拥有的视图视图层次结构。他们响应视图加载,出现,消失等等操作。...它为我们提供了许多功能,如果我们开始使用它们,这些功能将带来巨大好处。 我们需要MVC替代品吗? 好吧,答案很明显:我们不需要。您已经了解了什么是真正 MVC,以及如何在 iOS 中使用它。...Apple MVC 无论如何都与它们两者不同。 最重要是要了解我们已经拥有充当 UIView 持有者 UIViewController。...虽然接口分解是一种管理代码大小有效方法,但我们认为应该按需执行,而不是有条紊地针对每个视图控制器执行。

    1.3K20

    GitOps 和 Kubernetes 中 secret 管理

    并为实施 GitOps 用户和客户提供在损害私密性情况下为其应用程序提供 Secrets 机制呢?...Sealed Secrets 由两个主要部分组成: 一个 Kubernetes 控制器,它了解用于解密和加密数据私钥和公钥,并负责对资源对象调谐。...KubeSeal CLI 工具允许开发人员获取普通 Kubernetes Secret 资源并将其转换为 SealedSecret 对象,可以控制器自动获取执行加密所需公钥,否则,公钥必须由用户提供作为输入...此外,如果在集群中私钥丢失(由于意外删除或在灾难情况下),并且没有备份,则必须使用新私钥公钥重新加密所有加密数据,然后提交到所有 Git 存储库。...在后一种情况下,还可以选择使用 sidecar 密钥管理系统获取和刷新secret 信息。

    1.5K20

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    通过从末尾删除单词“View”并附加上下文,此转换有效地假设您拥有用于不同视图文件夹(命名空间)。...每当您使用UIElement上View.Model attached属性进行ViewModel首次合成渲染时,都会调用定位器以查看合成ViewModel应如何在UI中该位置进行渲染。...因此,我们必须使用自定义实现,它执行区分大小写搜索。这确保了在两个地方使用相同绑定语义。...一旦找到匹配项,我们就可以ConventionManager获取ElementConventions,这样我们就可以确定该元素上数据绑定方式。...ApplyStringFormat-确定是否需要自定义字符串格式并将其应用于绑定。默认情况下,如果绑定到日期时间,则使用格式“{0:MM/dd/yyyy}”。

    2.8K20

    SVN和Git对比梳理

    在日常运维工作中,经常会用到版本控制系统,目前用到最广泛版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?...SVN(Subversion)是集中式管理版本控制器,而Git是分布式管理版本控制器!这是两者之间最核心区别。...Git服务器所在网络情况下移动办公/出差时,照常使用代码库 你只需要在能够接入Git服务器所在网络时,PULL和PUSH即可完成和服务器同步以及提交 Git提供rebase 命令,可以让你改动看起来是基于最新代码实现改动...工作成员也可以提交到其他版本库! (9)分支(Brach)不同。 分支在SVN中一点不特别,分支在SVN就是版本库中另外一个完整目录,且这个目录拥有完整实际文件。...你可以同一个工作目录下快速在几个分支间切换。你很容易发现未被合并分支,你能简单而快捷合并这些文件。Git分支名是可以使用不同名字

    1.5K60

    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

    然而在实际使用情况下,View常用于显示动态数据。在实验三中们将在View中动态显示数据。 View将从Controller获得Model中数据。 Model是MVC中 表示业务数据层。...使用货币显示工资——逻辑层 3. 使用不同颜色表示工资值,使用简单逻辑改变了HTML元素外观。...使用货币显示数量 3. 薪资以不同颜色来显示 4. 当前登录用户也需要在View中显示。...而Salary属性数据类型是字符串,且有两个属性添加称为SalaryColor和UserName。 3. View中使用ViewModel 实验五中已经创建了View强类型Employee。...假如View包含任何呈现逻辑只显示Model数据情况下还需要创建ViewModel吗?

    2.3K90

    GitOps利弊

    这意味着我们可以比较两个.yaml 文件,以查看差异。在大多数情况下,变更可以追溯到特定事件或变更请求。 拥有权 知道谁拥有.yaml 文件意味着你还知道谁拥有在集群中运行容器。...在微服务实现中,当出现问题时,了解服务所有者是至关重要。因此,在投资任何其他类型工具情况下,我们得到了这个关键信息。...GitOps 依赖于 Git 报告。不幸是,需要大部分关键数据特定微服务库存跟踪或最后更改)都维护在不同分支多个脚本中。当你试图处理一个事件时,挖掘这些数据可能有些繁重。...最终,为了支持成百上千微服务迁移到几十个集群,编目微服务、聚合它们关系、跟踪元数据以及将数据定义中分离方法将是大多数大型企业所需要方向。...Ortelius 开源社区[5]将考虑基于存储在微服务目录中数据扩展生成部署.yaml 文件使用。然后,可以根据触发器或按需将这些.yaml 文件提交到适当环境仓库。

    1.9K10

    设计模式大集合

    结构模式 名称 描述 适配器、包装器或转换器 将一个类接口转换成客户期望另一个接口。一个适配器让类协同工作,否则由于接口兼容,就不能这样做。 桥 将抽象与它实现分离,使两者独立地变化。...解释器 使用一种语言,为它语法定义一个表示,以及一个使用该表示来解释语言句子解释器。 迭代器 提供了一种方法,可以在暴露其底层表示情况下连续访问聚合对象元素。...属性绑定 结合多个观察者来强制不同对象属性,以某种方式同步或协调。 区块链 分散存储数据,并就如何在Merkle树中处理数据达成一致,可选地使用数字签名进行任何个人贡献。...计算内核 在并行计算中,相同计算操作(但数据不同计算,使用共享数组将不同计算数据统一计算,GPU优化矩阵乘法或卷积神经网络。...控制器用户那里解释鼠标和键盘输入,通知模型和/或视图在适当时候进行更改。

    1.3K90

    Kubernetes CSI工作原理

    也许你担心 in-tree 迁移到 CSI 卷后果?或者,你只是想了解更多有关持久化存储如何在 Kubernetes 中工作信息?那么,你来对地方了!...如果你使用是为云提供商构建驱动程序( AWS 上 EBS),则驱动程序控制器插件会与 AWS HTTPS API 通信以执行这些操作。...在发布(挂载)卷以供工作负载使用时,节点插件首先要求控制器插件已成功在它可以访问目录中发布卷。在实践中,这通常意味着控制器插件已创建卷并将其附加到节点。现在卷已附加,是节点插件发挥作用时候了。...这两个 API 调用通过创建 EBS 卷并将其附加到特定实例来分配基础存储。一旦卷附加到 EC2 实例,节点插件就可以自由地对其进行格式化并在其主机文件系统上创建一个挂载点。...如果控制器插件只是进行 AWS API 调用来管理卷和快照,为什么它需要访问节点根文件系统?大多数控制器插件都是无状态且高可用,这两者都适用于 Deployment 模型。

    20710
    领券