2017-04-06 54 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