2017-04-06 69 views
1

DatabaseModelasp.net复杂的模型单一视图

我上面的数据库模型:

  • PD:预定义(用户拥有的选项列表可供选择)
  • UA:用户添加(用户可以创建新条目的这个)
  • SA:系统中增加(当一切都被保存在控制器中产生)

我试图想出一种创建'over view'的方法,所以我可以在一个页面上创建Report_Main的所有需求,而不必为Report_Main创建一个视图,然后将用户指向另一个页面以供他们输入Report_Peramiter_Fields等

我已经看过查看模型,但我不能很好地得到我的头,我得到它'索引'和'细节'的意见拉回数据。它更多用于创建和编辑模型。

Database: Sql Server 
Data Mapping: Entity Framework 
View Engine: razor 
+0

什么是你的基础数据层包括:您可以通过使用C#通过在刀片型号列表循环?你在使用实体框架吗? NHibernate的?请给一些更多的细节。 – px06

+0

道歉,我目前正在使用实体框架和SQL服务器 – Houlahan

回答

1

的ViewModels是代表了一个视图,你需要显示的模型信息数据的方法,请看看这个问题,了解它们是什么:What is ViewModel in MVC?

你的情况,你可以创建

namespace MyProject 
{ 
    public class MyViewModel 
    { 
     public int ID { get; set; } 
     public System_Tracking Tracking { get; set; } 
     public Report_Login_Credentials Credentials { get; set; } 
     public Report_Type Type { get; set; } 
     public List<Report_Peramiter_Fields> Fields { get; set; } 
     public string Name { get; set; } 
     public string Location { get; set; } 
    } 
} 

它可能只是看起来像一个简单的模型,而且因为它是,但它只是一个视图中使用它:一个简单的视图模型来表示你需要显示在Report_Main数据,这可以很容易做的实现不是持续存在。这是模型和视图模型之间的区别。

从这里就只需要一个页面,说MyPage.cshtml在那里你可以使用这个模型,如:

@model MyProject.MyViewModel 

@{ 
    ViewBag.Title = "MyPage"; 
} 

@* your content here *@ 

@Model.ID <br> 
@Model.Report_Type.Description 

// Etc. 

要通过这些信息,您将需要做的是在你的控制器,例如:

namespace MyProject 
{ 
    public class MyController : Controller 
    { 
     public ActionResult MyPage(int? Id) 
     { 

      var data = context.Report_Main.Find(Id); // Or whatever 

      var vm = new MyViewModel(){ 
       Tracking = data.System_Tracking, 
       // ... populate the viewmodel here from the data received 
      }; 

      return View(vm); 
     } 
    } 
} 

简而言之,ViewModels允许您绑定一个模型中的所有数据,并将其传递到可以静态表示它的视图上,并且还可以在不想直接表示的情况下从用户获取数据时使用它。访问模型。

编辑:

foreach(var item in Model.Fields) 
{ 
    <p>item.Peramiter</p> 
} 
+0

感谢您的观看模型是一个巨大的煽动!我将如何处理Report_Peramiters方面的事情,因为这是一个对象列表? – Houlahan

+0

@Houlahan我已经编辑了答案,以展示如何在Razor中迭代结果。然而,它对我来说的方式是'Report_Main_Export_Type'是'Report_Peramiter_Fields'和'Report_Export_Type'之间的中间链接表。在你的模型中,你实际上需要类似于:'List '但我不能肯定地说,因为你的表看起来很没有语境的混乱。 – px06

+0

我了解如何在创建或编辑时将列表中的项目添加到列表中的项目。 Report_Export_Type只是文件格式excel,csv,pdf的列表,因此特定报告可以将选项导出为csv,然后也可以使用pdf – Houlahan