连接两个模型以将数据放入视图中

2023-12-30

完成MVC菜鸟警告。(2小时学习时间)

我在网上查看了很多 MVC3 示例,但没有找到一个简单的示例来完成我想做的事情。

我想要做的是两个连接两个模型并将一些数据放入视图中。最明显的是

  public partial class Model1
    {
        public int ID { get; set; }
        public int StudentID { get; set; }
        public int CoachID { get; set; }
        public String StudentName {get;set;}

}



public partial class Model2
    {
        public int CoachID { get; set; }
        public String CoachName { get; set; }
}

基本上在我看来,我必须在 CoachID 上加入模型 1 和模型 2 并打印 网格中的 StudentName 和 CoachName。

  1. 我该怎么做呢?如何为此创建视图模型?

  2. 如何迭代视图并打印连接的数据?

  3. 我可以只在数据库中创建一个视图并直接将模型和视图附加到它吗?

听起来很简单,但我在网上度过了过去三个小时,完全感到困惑


  1. 创建一个 StudentCoachViewModel,其中包含您需要显示的属性,仅此而已。

  2. 在控制器中填充此视图模型的列表并将其发送到您的视图。稍后将提供代码示例。

  3. 枚举您视图中的该列表


public class StudentCoachViewModel
{
   public string CoachName { get; set; }
   public string StudentName { get;set; }
}

在你的控制器中,有以下几行内容(只是输入此内容,尚未在编译器中检查)

public ActionResult Index()
{

  //code to populate your model1 and model2 already assumed

  var viewModels = (from m in model1List
                 join r in model2List on m.CoachId equals r.CoachId 
                 select new StudentCoachViewModel(){ StudentName=m.StudentName, 
                          CoachName = r.CoachName }).ToList();

  return View(viewModels);
}

在您看来,类似的东西(显然您想要格式化并使用正确的布局、表格等,这些可以由 Visual Studio 自动生成)

@model IEnumerable<StudentCoachViewModel>
//other html content here

@foreach(var viewModel in Model)
{
   @Html.DisplayFor(o=>o.CoachName)   @Html.DisplayFor(o=>o.StudentName)
}

现在,如果您只想要一个而不是列表,那就更容易了

public ActionResult Index(int id)
{
  //code to load model1 and model2 already assumed to be in place. also assuming you loaded this data from a database by the id field being passed into this method.
  return View(new StudentCoachViewModel(){ StudentName = model1.StudentName, CoachName = model2.CoachName});
}

然后视图就变得简单了

@model StudentCoachViewModel
//other html here, h1, divs, etc whatever is in your view as html content.
@Html.EditorForModel()
or if you like to display each one instead of the above one line call:
@Html.LabelFor(o=>o.CoachName)
@Html.EditorFor(o=>o.CoachName)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接两个模型以将数据放入视图中 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以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
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

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

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

随机推荐

  • 无法反序列化当前 JSON 对象(空数组)

    我正在尝试制作一个将所有这些对象格式化为树视图的程序 为此 我使用 JSON 来排序对象 我需要解析 JSON 所以我选择了 JSON NET 下面是一个格式化示例 Space ClassName SpaceObject Name Spac
  • 所有指针都保证能正确地往返 void * 吗?

    在C语言中 是否保证任何指针类型都可以往返void 成功地 也就是说 像下面这样的东西保证可以工作 typedef struct A A p void v p A p2 v use p2 here 无论什么类型A 对象指针确实可以通过voi
  • NUnit Assert.Equals 与 Assert.AreEqual

    有什么区别 Assert Equals and Assert AreEqual Assert NotNull and Assert IsNotNull Assert Equals 是对象比较 Assert AreEquals 被重载以比较
  • 在 Node 模块导出的函数上使用 `jest.spyOn`

    In Jest https jestjs io 为了监视 并可选择模拟实现 方法 我们执行以下操作 const childProcess require child process const spySpawnSync jest spyOn
  • 使用 .NET 获得快速 RPC 的最简单方法?

    在 NET 中获取 RPC 最简单的方法是什么 我看到有 NET Remoting和WCF 根据维基百科 WCF是 NET Remoting的后继者 到目前为止 我只尝试了远程处理的东西 这似乎非常简单 到目前为止 我也没有遇到任何应用程序
  • 如何对每一行执行语句并返回整个结果

    这是上一个问题的延续 查找具有匹配行的组 https stackoverflow com questions 42700771 find groups with matching rows 我有一张表 其中包含人和他们拥有的汽车 Name
  • (已解决)如何用jq读取100+GB的文件而不耗尽内存

    我有一个 100 GB 的 json 文件 当我尝试用 jq 读取它时 我的计算机继续运行我们的 ram 有没有办法在限制内存使用的同时读取文件 或者有其他方法来读取非常大的 json 文件 我在命令中输入的内容 jq keys fileN
  • 如何使用 Cabal 列出所有已安装的软件包及其版本?

    是否有一个简单的命令 选项可以让您做到这一点 我可以用grep但我想知道是否有内置选项 我们可以简单地这样做 cabal list installed
  • python-social-auth 是否需要会话

    我正在构建一个带有 API 后端 使用 DRF 构建 和 angularjs 客户端的 django 应用程序 我的目标是使用 JWT 代替会话来完全解耦服务器和客户端 我正在尝试整合python 社交 身份验证 https github
  • SQL 中的日期范围交集

    我有一个表 其中每一行都有开始和结束日期时间 这些跨度可以是任意短或长 我想查询具有两个开始和停止日期时间的所有行的交集总持续时间 如何在 MySQL 中做到这一点 或者您是否必须选择与查询开始和停止时间相交的行 然后计算每行的实际重叠并在
  • 更改输入焦点上占位符范围的字体颜色

    我有一个输入字段 里面有一个跨度占位符 我想做的是在单击输入字段时更改占位符的颜色 这是一个 jsFiddle 其中包含我的领域的示例 http jsfiddle net Vbnj2 http jsfiddle net Vbnj2 最好的方
  • 在 C# 中将 Html 转换为 Docx [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 C 中将 html 页面转换为 docx 我该怎么做 我的解决方案使用Html2OpenXml
  • 使用node.js从Firestore中的子集合中删除文档

    我想从 Firebase 子集合中删除文档 我尝试通过以下方式做到这一点 firestore collection categories doc categoryId collection books doc bookId delete 但
  • 为什么插入排序是排序或近似排序数组的最佳算法?

    所以我猜它是因为它只是比较 A k 和 A k 1 并在一次扫描中实现 但它仍然不清楚 有人可以更好地解释一下吗 谢谢 This link http www sorting algorithms com 显示了一个不同类型数据集排序算法的图
  • Blazor - 比较上一个和下一个状态

    我在 Blazor 中有一个学生表 它来自 api 我还收到推送数据来更新学生信息 这基本上是数据库更改后的分数 推送工作正常 分数为正在更新 但我还想将分数更改后表中已更新的字段的背景颜色更改为仅 td 标签的红色几秒钟 我的代码如下 f
  • 在 Bootstrap 面板上调用事件展开

    我正在开发一个流程 我们使用 Bootstrap 风格的手风琴 不是 jQuery UI 手风琴 要求是当用户展开手风琴时调用服务 这是 HTML div class accordion dashboard div class panel
  • 如何清除 WPF WebBrowser 中特定站点的 cookie?

    如何删除特定网站或其页面的身份验证 cookie 目前 如果我通过 WPF WebBrowser 使用 OAuth 2 0 登录 我的登录会话将被保存 但我想在每次关闭应用程序时重置会话 public partial class VKLog
  • 使用 Retrofit2 以表单 urlencoded 请求发送对象列表

    这是我的邮递员请求 我将使用 Retrofit2 Gson 和 RxJava2 发送 POST 请求 这是我的要求 FormUrlEncoded POST Student I m sure the address and name are
  • React Native - 禁用 iOS 键盘上的密码自动填充选项

    在 React Native 中 如何禁用或阻止键盘显示密码自动填充附件视图选项 好像没有房产文本输入处理禁用此选项 React Native TextInput 文档 https facebook github io react nati
  • 连接两个模型以将数据放入视图中

    完成MVC菜鸟警告 2小时学习时间 我在网上查看了很多 MVC3 示例 但没有找到一个简单的示例来完成我想做的事情 我想要做的是两个连接两个模型并将一些数据放入视图中 最明显的是 public partial class Model1 pu