【问题标题】:How to use more than two models in MVC razor view?如何在 MVC 剃须刀视图中使用两个以上的模型?
【发布时间】:2015-10-22 11:45:21
【问题描述】:

我已经使用实体数据模型向导在 SQL 服务器中为我的表创建了一个实体框架,但是我需要在 MVC 的 razor 视图中使用两个以上的模型,目前我有一个现有的 linq 查询:

控制器视图

var test = from a in db.tbl_users
       where a == 2
       select a;

return view (test.ToList());

剃刀视图:

@model IEnumerable <Telephone_Search.Models.tbl_users>

@foreach (var item in model)

@HTML.DisplayFor(modelItem => item.users)

但是我计划访问实体框架中存在的其他我想要循环的表,像这样

@model IEnumerable <Telephone_Search.Models.'EntityFramework'>

@foreach (var item in 'entityframework')

@HTML.DisplayFor(modelItem => EntityFramework.'table'.'item')

我试图创建一个视图模式,但是我的类在模型文件夹中是分开的,我不确定如何将这些类包装到一个视图模型中?

【问题讨论】:

  • 我的模型在实体数据模型向导生成的部分类中,我需要找到一种方法来放置带有这些部分类的父视图模型。

标签: c# asp.net-mvc linq model controller


【解决方案1】:

您必须创建一个新类,通常称为 ViewModel 并在该类中传递数据:

public class MyViewModel
{
  public IEnumerable<Telephone_Search.Models.tbl_users> users;
  public IEnumerable<OtherType> otherThings;
  public string SomeOtherProp {get;set;}
}

在视图中:

@model MyViewModel

foreach (var usr in Model.users) {...}
foreach (var ot in Model.OtherThings) {...}
<span>@Model.SomeOtherProp</span>

在控制器中:

var test = from a in db.tbl_users
       where a == 2
       select a;

var otherTypes = from x in db.tbl_otherTypes where x.Prop > 10 select x;

return this.View(new MyViewModel
{
  users = test,
  otherThings = otherTypes,
  SomeOtherProp = "stackoverflow answer"
});

【讨论】:

  • 我很乐意这样做。但是,不要使用 cmets 来感谢人。将其标记为正确并投票就足够了。取自 SO 帮助:“使用 cmets 询问更多信息或澄清问题或答案。” ;)
  • 没关系,我指的是用户而不是剃刀中的 tbl_users。终于工作了 :) 谢谢!
【解决方案2】:

我们不能直接绑定多个模型,但还有其他选项可以处理多个模型。

  1. 使用 Viewbag 你可以传递其他模态的数据

     ViewBag.Users = db.Students.ToList();
    

    在视图侧

     @{
         var students = (List<Students>)ViewBag.Students;
      }
    
  2. 您可以创建具有包含其他模态对象的属性的模态

     public class StudentViewModel
     {
          public string StudentName{get;set;}
          public IEnumerable<MarksheetViewModels> Results;          
     }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多