在 MVC 视图中迭代匿名类型数据

2023-12-14

我将匿名类型的结果放入一些视图数据中:

            var projectData = from p in db.Projects
                          orderby p.title
                          select new
                          {
                              Title = p.title,
                              DevURL = p.devURL ?? "N/A",
                              QAURL = p.qaURL ?? "N/A",
                              LiveURL = p.liveURL ?? "N/A",
                              Users = p.GetUsers().MakeUserList()
                          };

        ViewData["ProjectSummary"] = projectData;

我如何在前端的MVC视图中迭代这个视图数据,制作一个结果表?


在您的情况下,创建一个模型来保存数据比使用匿名类型要简单得多。

您遇到的问题是,当您的匿名类型存储在 ViewData 中时,该类型会被强制转换为对象。在 UI 方面,当您取出该对象时,访问其属性的唯一方法是使用反射。您不想在用户界面中执行此操作。这将是非常难看的。相反,只需将以下类添加到您的模型中:

public class Project{

public string Title {get;set;}
public string DevUrl {get;set;}
public string QAUrl {get;set;}
public string LiveUrl {get;set;}
public IEnumerable<User> Users {get;set;}

public static IEnumerable<Project> RetrieveAllProjects()
{
  return from p in db.Projects
           orderby p.title
           select new Project
             {
                Title = p.title,
                DevURL = p.devURL ?? "N/A",
                QAURL = p.qaURL ?? "N/A",
                LiveURL = p.liveURL ?? "N/A",
                Users = p.GetUsers().MakeUserList()
             };
}

在你的控制器中执行以下操作:

public ActionResult Index()
{
  return View("Index", Project.RetrieveAllProjects());
}

并在您视图的代码隐藏中,强类型如下:

//snip
public partial class Index : ViewPage<IEnumerable<Project>>
{
//snip

您可能会认为放置所有这些模型有点浪费,但如果您明智地使用模型,它会更容易理解,并且会使您的 UI 代码更加简洁。

此外,模型是放置加载数据和构建模型本身的逻辑的好地方(事实上,应该是您执行此操作的地方)。想想 ActiveRecord。而且,当您对所有这些进行编码时,请意识到像 SubSonic 这样的项目可以为您创建模型,没有任何混乱或大惊小怪。

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

在 MVC 视图中迭代匿名类型数据 的相关文章

  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • 在 omp 并行 for 循环中使用 unique_ptr 会导致 SEG.FAULT

    采取以下代码 include
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 您如何填充/验证您的 ViewModel?

    我很好奇人们构建 ViewModel 的各种方式以及他们为什么选择该方法 我在这里可以想到几种方法 1 注入存储库 控制器加载模型并映射到 ViewModel 这里 ViewModel 构造函数可以采用各种集合来进行内部设置 在选择列表中
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • Sharepoint SPS 站点

    我正在尝试为共享点搜索创建对象的 spsite 但由于找不到网站 我在生产中遇到异常 SPSite site new SPSite sitename ServerContext scon ServerContext GetContext s
  • 如何在 Java Web 应用程序中使用 jQuery 学习 AJAX

    有人可以给我指点一下使用 jQuery 通过 Java servlet 创建 AJAX 应用程序的教程吗 我正在看教程使用 JQuery 在 Java Web 应用程序中实现 Ajax 这与我需要的类似 但它不包括大部分细节 如果您知道一个
  • 建造者模式和继承

    我有一个对象层次结构 随着继承树的加深 其复杂性也会增加 这些都不是抽象的 因此 它们的所有实例都或多或少地服务于一个复杂的目的 由于参数数量相当多 我想使用构建器模式来设置属性 而不是编写多个构造函数 由于我需要满足所有排列 继承树中的叶
  • 如何在 Linux 上关闭 gcc 预处理器?

    我已经用谷歌搜索 在 Linux 上关闭 gcc 预处理器 有一段时间了 使用确切的短语 一切都无关紧要 例如我想关闭一切except预处理器 与我想要的相反 或加压警告 有谁知道禁用预处理器的方法吗 我发现 Facebook 开发并声称速
  • 将数据帧行转换为字符向量时出错

    所以我有以下数据框 数据框 X1 X2 X1 1 X2 1 Composite Element Composite Element 14 3 3 epsilon M C 0 8660101895 14 3 3 epsilon M C 0 6
  • Java 列表排序:有没有办法像 TreeMap 一样让列表自动永久排序?

    在Java中你可以建立一个ArrayList与项目 然后调用 Collections sort list comparator 无论如何 是否可以在列表创建时传入比较器 就像您可以做的那样TreeMap 目标是能够将一个元素添加到列表中 而
  • Azure Web App 是否关心其实例是否健康?

    如果我将 Web 应用程序 以前称为 Azure 网站 部署到 Azure 中具有几个实例的应用程序托管计划 规模 2 实例前面的负载均衡器会关心是否有任何实例不健康吗 我正在解决有时会导致我的网站在大约 50 的情况下返回 http 50
  • 使用 OpenCV 和 Python 显示网络摄像头源

    我一直在尝试创建一个简单的程序Python它使用 OpenCV 从我的网络摄像头获取视频源并将其显示在屏幕上 我知道我部分在那里 因为窗口已创建并且网络摄像头上的灯闪烁 但窗口中似乎没有显示任何内容 希望有人能解释我做错了什么 import
  • 如何在嵌套列表上使用映射函数并将字符串转换为整数?

    我需要使用Python 2 4 4 中的map函数为列表中的每个项目加1 所以我尝试将字符串转换为整数 line 10 13 n 3 4 n 5 3 n 1 13 map lambda X X 1 int line 这不起作用是因为 n还有
  • 指针和多维数组[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中使用数组 二维数组是双指针吗 二维数组和指针 我知道这是一个非常基本的问题 但无论经过多少谷歌搜索 我都无法弄清楚这一点 这就是我将其发布在这里的原因 在 C 中考虑声明int x 10
  • getch() 和 getchar() 有什么区别?

    两者之间的确切区别是什么getch and getchar功能 getchar 是一个从标准输入获取字符的标准函数 getch 是非标准的 它从键盘获取一个字符 可能与标准输入不同 并且不回显它
  • 解码作为 json 响应返回的 html - android

    我将编码后的 html 作为 json 响应进行跟踪 并且不知道如何将其解码为正常的 html 字符串 顺便说一下 这是一个 achor 标签 x3ca hrefx3dx22http wordnetweb princeton edu per
  • 抛出异常时从堆栈跟踪和帧中获取文件名

    我试图在引发异常时获取文件名和源代码行号 但我什么也没得到 class Program static void Main string args try throw new InvalidOperationException catch I
  • C# try catch 语句中的变量作用域问题

    我不想在这里问这个简单的问题 但我已经研究了一段时间但无济于事 这极大地限制了我的申请 为什么我在 try 块内的 excelWorksheet 变量上出现红色波浪线 无法在此范围内声明名为 excelWorksheet 的本地或参数 因为
  • Swift 将货币字符串转换为双精度

    我有一根绳子 4 102 33 需要转换为双精度 这永远是美国 我唯一的方法是破解 and 然后转换为双精度 似乎NSFormatter只允许我转换为货币 而不是从货币转换 有没有内置功能或比仅仅删除更好的方法 and 在将其转换为双精度之
  • 10.8中如何显示文件复制进度

    FSCopyObject异步在 OS X v10 8 中已弃用 现在如何显示文件复制操作的进度指示器 我的回答假设你正在谈论展示一个项目的进展单个文件被复制 Yes FSCopyObjectAsync 已被弃用 但尚未消失 正如您所发现的
  • 使用 htaccess 重写特定文件的路径

    我想为具有长文件路径的目录中的特定文件创建一个友好的 URL 并重命名该文件 我什至不确定这是否可能 到目前为止我已经在 htaccess 中尝试过 RewriteEngine On Options FollowSymLinks Rewri
  • 使用 PIL 在 python 上向图像添加透明圆圈

    我有一个 python 程序 它创建一个带有圆圈的 png 文件 现在我希望这个圆是半透明的 给定一个 alpha 值 这是我所做的 img map Image new some arguments here tile Image open
  • 将 Woocommerce 变体属性下拉列表中的默认“选择选项”文本替换为不同的自定义文本

    我刚刚开始使用 Woocommerce 并对可变产品的下拉选择字段有疑问 在 woocommerce 中 如果在此下拉列表中未选择任何内容 则会显示 选择选项 文本 我需要每个下拉选择字段选项在尚未选择任何内容时显示不同的文本 我发现这段代
  • 在 MVC 视图中迭代匿名类型数据

    我将匿名类型的结果放入一些视图数据中 var projectData from p in db Projects orderby p title select new Title p title DevURL p devURL N A QA