【问题标题】:MVC multiple tables for one viewMVC 一个视图的多个表
【发布时间】:2014-05-21 12:51:00
【问题描述】:

我有一个视图,其中包含来自数据库的 4 个表的数据。 我需要在我的模型中定义所有这些字段吗?这样我就可以在我的视图中使用它们,例如:-

@model.fieldFromTable1
@model.fieldFromTable2
@model.fieldFromTable3
@model.fieldFromTable4

【问题讨论】:

  • 这看起来很相似,但我没有任何链接这两个表的东西,它们都包含单独的数据,比如击球手和保龄球运动员之一,所以我必须将每个击球和保龄球字段添加到我的模特,对吧?
  • 仅供参考:提出问题时,在字段下方输入问题标题后,将出现潜在类似问题的列表。在实际发布您的问题之前,请务必首先检查这一点。我个人看到了一些已经提出并回答的问题,这些问题都符合要求。
  • 链接问题的答案建议使用视图模型。不存在以某种方式链接您放入该视图模型中的数据的条件。
  • 好的,谢谢! :)

标签: asp.net-mvc


【解决方案1】:

答案是肯定的。您可能可以将您的模型更多地视为 ViewModel。不是您数据库中的实际模型。

在您的控制器中,您只需从数据库模型中填充 ViewModel

MyViewModel.cs

//put whatever properties your view will need in here 
public class MyViewModel 
{
    public string PropertyFromModel1 {get; set;}
    public string PropertyFromModel2 {get; set;}
}

MyController.cs

public ActionResult MyAction()
{ 
    //the only job your action should have is to populate your view model
    //with data from wherever it needs to get it
    Model1 model = GetFirstModelFromDatabase();
    Model2 model2 = GetSecondModelFromDatabase();

    MyViewModel vm = new MyViewModel 
    {
        PropertyFromModel1 = model.MyProperty;
        PropertyFromModel2 = model2.MyProperty;
    }

    return View(vm);
}

MyAction.cshtml

@Model.PropertyFromModel1
@Model.PropertyFromModel2

实际上,不在视图中使用原始域模型是非常标准的做法,因为我想说这通常与您想要显示的内容不匹配完全

【讨论】:

  • 谢谢,帮了大忙:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多