gpt4 book ai didi

c# - ASP.NET MVC razor View ,发布到与原始模型绑定(bind)不同的模型?

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:03 25 4
gpt4 key购买 nike

我在项目中有一个组 Controller 和 View ,其中模型绑定(bind)是 GroupViewModel。但是群页面比较复杂,用户可以进行话题讨论。在此组 View 页面上,我有允许用户发布主题/回复的表单。用于这些表单的模型可以是 TopicViewModel 或 ReplyViewModel,但原始模型绑定(bind)仅适用于 GroupViewModel。在cshtml页面的开头声明:

@model MyProject.ViewModels.GroupBrowseViewModel

所以我想知道,是否可以让表单绑定(bind)到与顶部声明的 View 模型不同的 View 模型?如果是这样,如何实现这一目标?

最佳答案

模型绑定(bind)实际上与 razor View 中使用的模型无关。至少在技术上不是。

首先你要明白这里没有魔法。这是直接的 HTTP 发布值,如果您不了解 HTTP 发布的工作原理,我建议您继续阅读。它只是一系列名称/值对。

当您发布时,路由框架会查看选定的操作方法以及该方法采用的参数,然后它会创建这些参数的新实例,并尝试将它们与发布值中具有类似名称的值进行匹配。

因此,换句话说,您在页面上使用的模型与发布的 Controller 操作中使用的模型之间没有直接联系。这一切都基于命名约定。您在页面上声明的模型“帮助”了这种命名约定,Html 帮助程序创建名称与模型条目匹配的表单字段,以便模型绑定(bind)器可以更轻松地找出这些。

因此,这意味着为了使用不同的模型发布到不同的操作,您所需要的只是表单中具有新模型所需名称的字段。

这可以通过多种方式完成,从手动定义这些字段,到使用局部 View ,在局部 View 中您将要发布的模型实例作为模型参数传递。

关于c# - ASP.NET MVC razor View ,发布到与原始模型绑定(bind)不同的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30416615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com