在 MVC4 中的单个视图中访问多个模型中的项目

Posted

技术标签:

【中文标题】在 MVC4 中的单个视图中访问多个模型中的项目【英文标题】:Accessing items in multiple models in a single view in MVC4 【发布时间】:2014-04-24 02:35:11 【问题描述】:

我在如何从 mvc 中的不同视图访问变量时遇到问题。他们设置它的方式是我在一个视图上有一个模式,我想显示来自多个模型的值。我知道我必须使用 foreach 语句来遍历这些项目,但我不知道如何访问其他项目。

这就是我在视图中调用模型的方式:

@model IEnumerable<MyApp.Models.Problems>

这是我尝试访问值的模型:

public class Problems
    
        public int Id  get; set; 
        public string Title  get; set; 

        public IEnumerable<MyApp.Models.Category> Categories  get; set; 
        public IEnumerable<MyApp.Models.Type> Types get; set;

    

这是我的其他模型:

public partial class Category
    
        public int Id  get; set; 
        public string Title  get; set; 
    

public partial class Type
    
        public int Id  get; set; 
        public int Order  get; set; 
        public string Description  get; set; 
    

这是我正在尝试做的一个示例:

这会在我的问题模型中调用标题:

@html.DisplayNameFor(model => model.Title)

但我希望它能够在同一视图中调用类别标题。任何人有任何想法或可以指出我正确的方向,将不胜感激!!!

【问题讨论】:

【参考方案1】:

这就是你如何使用嵌套的foreach 循环来实现你想要的:

@foreach (Problems problems in Model)

    foreach (Category category in problems.Categories)
    
        @Html.DisplayNameFor(category => @category.Title)
    

    ...

您可能需要在视图顶部添加 using 语句以包含模型所在的命名空间。即:

@using MyApp.Models

【讨论】:

啊,我明白了。所以我添加了使用部分,但是当我调用“in Model.Problems”时,它给了我一个关于“问题”的错误说 - 不包含“问题”的定义,并且没有扩展方法“问题”接受类型的第一个参数......可以找到。 此外,它不允许我重命名类别,因为它们在同一范围内。 可能不好。该行应为@foreach (Problems problems in Model)。我已经编辑了我的答案。

以上是关于在 MVC4 中的单个视图中访问多个模型中的项目的主要内容,如果未能解决你的问题,请参考以下文章

单个视图中的多个表单

视图中的 MVC4 模型问题:在调试模式下模型缺少详细信息

ASP.NET MVC4 视图中的模型和 ItemModel 绑定

API 控制器中的 MVC4 模型验证服务器端

如何在mvc中的模型中添加多个项目

如何根据 asp.net mvc4 中的模型列表填充 ListBox?