传递到字典中的模型项是 .. 类型,但是该字典需要类型为 的模型项

2023-12-01

添加了此问题和社区维基答案,以帮助解决许多未解答的问题,如中讨论的这个元帖子.


我有一些代码,当它执行时,它会抛出一个异常:

传递到字典中的模型项是 Bar 类型,但该字典需要 Foo 类型的模型项

这是什么意思?我该如何解决?


该错误意味着您正在导航到其模型声明为 typeof 的视图Foo(通过使用@model Foo),但你实际上传递给它的是一个 typeof 的模型Bar(注意术语字典使用是因为模型通过ViewDataDictionary).

该错误可能是由以下原因引起的

将错误的模型从控制器方法传递到视图(或部分视图)

常见示例包括使用创建匿名对象(或匿名对象集合)的查询并将其传递给视图

var model = db.Foos.Select(x => new
{
    ID = x.ID,
    Name = x.Name
};
return View(model); // passes an anonymous object to a view declared with @model Foo

或将对象集合传递给需要单个对象的视图

var model = db.Foos.Where(x => x.ID == id);
return View(model); // passes IEnumerable<Foo> to a view declared with @model Foo

通过在控制器中显式声明模型类型以匹配视图中的模型而不是使用,可以在编译时轻松识别错误var.

将错误的模型从视图传递到部分视图

给定以下模型

public class Foo
{
    public Bar MyBar { get; set; }
}

和一个主视图声明@model Foo和声明的部分视图@model Bar, then

Foo model = db.Foos.Where(x => x.ID == id).Include(x => x.Bar).FirstOrDefault();
return View(model);

会将正确的模型返回到主视图。但是,如果视图包含,则会抛出异常

@Html.Partial("_Bar") // or @{ Html.RenderPartial("_Bar"); }

默认情况下,传递给分部视图的模型是在主视图中声明的模型,您需要使用

@Html.Partial("_Bar", Model.MyBar) // or @{ Html.RenderPartial("_Bar", Model.MyBar); }

传递实例Bar到局部视图。另请注意,如果值MyBar is null(尚未初始化),则默认Foo将被传递给部分,在这种情况下,它需要

@Html.Partial("_Bar", new Bar())

在布局中声明模型

如果布局文件包含模型声明,则使用该布局的所有视图都必须声明相同的模型,或者从该模型派生的模型。

如果您想在布局中包含单独模型的 html,则在布局中使用@Html.Action(...)打电话给[ChildActionOnly]方法初始化该模型并返回它的部分视图。

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

传递到字典中的模型项是 .. 类型,但是该字典需要类型为 的模型项 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 表单身份验证 MVC4

    我正在尝试使用 MVC4 网站进行简单的表单身份验证设置 在App start FilterConfig cs中 public static void RegisterGlobalFilters GlobalFilterCollection
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 装饰器添加了一个意想不到的参数

    我想使用装饰器来处理 PyQt5 应用程序中的异常 def handle exceptions func def func wrapper args kwargs try print args return func args kwargs
  • 如何在 C# 中根据名称比较两个文件夹中的相似文件?

    我有两个文件夹A and B A 内部有多个文件 B 内部有多个文件 我必须检查 A 中的文件和 B 中的文件是否有相同的文件 我尝试像这样获取特定的文件名 void DirSearch string sDir List
  • 尽管我是所有者,但无法以所有者身份访问资源

    我正在尝试对存储桶和资源进行操作 但我不断收到访问被拒绝的错误 e g gsutil ls L gs images large gs images large aa png Creation time Tue 25 Nov 2014 20
  • Django 使用 ORM 选择每组前 n 条记录

    按照此question 我试图按条件获取每个组的前 10 条记录 但 Django 返回此错误 from django db models import F Window from django db models functions im
  • 如何使补充视图在 UICollectionView 中浮动,就像 UITableView 普通样式中的节标题一样

    我正在努力实现 浮动节标题 效果UICollectionView 一些很容易的事情UITableView 默认行为UITableViewStylePlain 似乎不可能UICollectionView无需付出很多努力 我错过了显而易见的事情
  • For 循环迭代 2 的幂

    我想编写一个 for 循环 为每个循环迭代 2 的幂 例如我想要一个这样的范围 2 4 8 16 1024 我怎么能这样做呢 您可以使用生成器表达式这样它就可以根据需要生成数字并且不会浪费内存 gt gt gt for x in 2 p f
  • 从描述符字符串恢复 .proto 文件。可能的?

    是否可以将包含 Protocol Buffers 描述符的字符串反编译回 proto 文件 假设我有一个长字符串 例如 n file proto u001a u000ccommon proto u00a3 u0001 n nMsg1Requ
  • 如何在没有 Web 请求或 Web 服务器的情况下解析 JSON 文件?

    寻求建立以下解决方法 getJSON myfile json function data showAll data 我想避免使用网络服务器 但只想直接访问文件 getJSON使用网络请求 出现错误 XMLHttpRequest cannot
  • PHP 中的 MySQL 与 MySQLi [重复]

    这个问题在这里已经有答案了 各自的区别 优点是什么 缺点 我不是在寻找编码偏好或主观答案 什么是实际的差异 存储 实现 代码的样子 环境要求 您可以使用准备好的陈述与 mysqli 还有一个存储大 blob 数据的函数 旧的 mysql 扩
  • 为什么IE8是IE7模式。变量“IE”== 7

    我的 HTML 页面中有如下标题 我在 IE8 中打开该网站 当我在 Web Developer 中查看它时 如果 IE 7 处于活动状态 WebBrowser 在 IE8 紧凑视图 上设置 BrowserMode 在 IE7 标准 上设置
  • Facebook FQL 获取 Facebook 页面的粉丝列表[重复]

    这个问题在这里已经有答案了 可能的重复 查询 喜欢 我的 Facebook 页面的用户 目前该网站上的所有解决方案都不起作用 我是 Facebook 页面的管理员 想导出所有粉丝的 ID 这可能吗 https api facebook co
  • Mysql - CAST 的唯一约束(TIMESTAMP as DATE)

    我有一个TIMESTAMP myDate我的 MYSQL 表中的字段 有没有办法可以定义一个唯一的字符串stringForTheDay对于每一个day in myDate 就像是 UNIQUE stringForTheDay day in
  • SVG 膨胀/侵蚀滤镜与 Illustrator 偏移路径

    下面是在 Chrome 22 0 1229 79 Mac 上呈现的 SVG 图像的屏幕截图 原始的 svg 位于 jsfiddle 上 http jsfiddle net LGBk5 左图是使用 SVG s 扩张和腐蚀滤镜制作的 右图是使用
  • Node.js Web 服务器中的并行请求

    如果我有一个运行 Node js 的 Web 服务器 那么我是否能够同时处理多个请求 从我的初步测试中我可以看出 Node 主要是单线程的 目前只能处理一个 HTTP 请求 但如果一个请求需要很长时间才能完成 例如上传大量数据 则所有其他请
  • 如果我不编辑代码,PHP Mail 就会停止工作

    我的 PHP 邮件有问题 它有时会停止工作 我什至没有接触代码 我有一个脚本可以检查所需的表单是否为空 这个脚本有效 但是 如果我填写所有必填字段 我应该会收到一条文本 显示 您的邮件已成功发送 但我没有 但是 如果我通过仅将一些文本向下移
  • C# 实体 LINQ 返回错误且重复的值

    我使用以下代码 List
  • cakephp 2 ajax 表单

    我在 cakephp 2 中构建 ajax 表单时遇到问题 它显然自 1 3 以来已经发生了很大变化 我正在使用以下代码 div div div div
  • C 中的通用二叉搜索树

    我已经实现了二叉搜索树 但我也想使其通用 代码如下 typedef struct treeNode int data struct treeNode left struct treeNode right treeNode 和功能 treeN
  • laravel with() 方法与 load() 方法

    我真的很努力去理解两者之间的区别with 方法和load 方法 但没能真正理解 据我所知 使用with 方法 更好 因为我渴望加载关系 看来如果我使用load 我加载关系就像使用hasMany 或与对象之间的关系相关的任何其他方法 我理解错
  • 传递到字典中的模型项是 .. 类型,但是该字典需要类型为 的模型项

    添加了此问题和社区维基答案 以帮助解决许多未解答的问题 如中讨论的这个元帖子 我有一些代码 当它执行时 它会抛出一个异常 传递到字典中的模型项是 Bar 类型 但该字典需要 Foo 类型的模型项 这是什么意思 我该如何解决 该错误意味着您正