对于每个循环,在MVC视图中使用第二个数据库表模型

时间:2014-10-31 13:54:54

标签: c# asp.net-mvc-4 razor view foreach

我有一个cshtml视图链接到我的数据库中一个表的模型的控制器,但我需要为每个循环引用第二个表的第二个模型。由于无法在页面顶部设置2个模型foreach (var row in model)不起作用。

我需要的是这样的东西

@model MVCapp.Models.COOKIE
@using MVCapp.Models;

@{
  ViewBag.Title = "Update";
  ;

  foreach (var row in IEnumerable<MVCapp.Models.COOKIE_JARS)
  {
     some code 
  }
}

<h2>Update</h2>

虽然这不是大声的,因为我正在使用类似变量的类型。所以我要问的是,是否有办法将类型:IEnumerable<MVCapp.Models.COOKIE_JARS设置为变量或第二个模型,或者如果有一个完全替代的方法来实现这个循环通过第二个数据库表,我试图尝试。

1 个答案:

答案 0 :(得分:2)

最好的方法是创建一个ViewModel,一个包含两个模型信息的类。

您必须永远不要从数据库中获取任何逻辑或获取信息,这是Controller的目标。

因此,我们的想法是您的控制器将进行查询,并将数据添加到您的ViewModel对象中,然后将其发送到View。

示例:

您的ViewModel:

public class CookieEatersViewModel
{
    public IEnumerable<Cookie> Cookies {get; set;}
    public IEnumerable<Monster> Monsters {get; set;}
}

您的观点:

@model MVCApp.ViewModels.CookieEatersViewModel

<h2>Update</h2>

<p>Use the informations from your ViewModel here</p>

你的控制器:

public ActionResult Index()
{
    CookieEatersViewModel cevm = new CookieEatersViewModel();
    cevm.Cookies = repo.GetCookies();
    cevm.Monsters = repo.GetMonsters();

    return View(vm);
}