2012-03-27 75 views
0

是否可以在一個視圖中放置2個模型?我的頁面是工作的罰款有一個模型,但是當我嘗試添加其他模型線以下我的代碼決定開始有一些錯誤:在1視圖中有2個模型的方法,可以嗎?

@model ProjectShop.Models.Delivery 

我的代碼之前,我添加上面一行的作品顯示如下:

@model ProjectShop.Models.Products 

@{ 
ViewBag.Title = "Products"; 
Layout = "~/Views/Shared/_ProductLayout.cshtml"; 
} 

<p>@Html.DisplayFor(model => model.productname) </p> 

在一個視圖中有兩個模型使我可以從兩個來源調用數據的方法是什麼?

編輯:

這是一類新的將作爲HTML頁面視圖模型,但我認爲它不是正確的在所有:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using ProjectShop.Models; 

namespace ProjectShop.ViewModels 
{ 
public class ProductDelivTimes 
{ 


     public Models.Products; 
     public Models.Delivery; 

} 
} 

編輯:

public class ProductDelivTimes 
{ 


    public Models.Products ProductModel; 
    public Models.Delivery DeliveryModel; 

} 

在我的HTML文件中:

@model IEnumerable<ProjectShop.ViewModels.ProductDelivTimes> 

編輯:

@model IEnumerable<ProjectShop.ViewModels.PerformanceTimes> 
@{ 

Layout = "~/Views/Shared/_Layout.cshtml"; 
var grid = new WebGrid(Model, rowsPerPage: 5, defaultSort: "Name"); 

ViewBag.Created = TempData["ProductCreated"]; 
ViewBag.Created = TempData["ProductDeleted"]; 
} 

@grid.GetHtml(
    tableStyle: "grid", 
    headerStyle: "gridhead", 
    rowStyle: "gridRow", 
    alternatingRowStyle: "gridRow", 
    mode: WebGridPagerModes.All, 
    columns: grid.Columns(

grid.Column("Image", format: @<text><img src="@item.image" alt="" width="84px" height="128px"/></text>, style: "Image"), 


grid.Column("Products", format: @<text>@Html.Raw(item.Products.name.Substring(0, item.Products.name.IndexOf(".") + 1))</text>, style: "Products") 


        )) 

回答

2

也許編寫一個包含兩個數據源模型,並決定哪一個在需要的時候從,獲取數據的包裝模式?

+0

數據將始終需要,其他所需的模型將顯示頁面上每個產品的交付日期。 – Blob 2012-03-27 15:25:43

+0

是的,所以只需將它們組合成一個「包裝」模型,知道如何組合來自兩種不同模型的數據以供顯示。 – Attila 2012-03-27 15:33:54

5

如果你想有多個域的實體作爲視圖的一部分,考慮創建結合了兩個數據源模型

喜歡的東西(只是僞代碼)視圖模型:

ProductDeliveryViewModel 
{ 
    // ProductModel 
    // DeliveryModel 
} 

所以你本來

@model ProjectShop.Models.ProductDeliveryViewModel 

@Html.DisplayFor (model=> model.ProductModel.Property) 
@Html.DisplayFor (model=> model.DeliveryModel.Property) 
+0

謝謝。我試圖創建我的視圖模型,但是當我嘗試將我的模型輸入到類中時出現語法錯誤:Models.Products;和Model.Delivery;請你能提供建議嗎?謝謝 – Blob 2012-03-27 15:53:00

+0

對不起,我不明白,你可以用你的ViewModel更新你的問題 – kd7 2012-03-27 16:33:30

+0

對不起,請參閱原文中的編輯。謝謝 – Blob 2012-03-27 16:48:28

2

的球隊,我已經對將使用一個ViewModel類這兩個業務對象包裝成可以通過視圖中使用的一個對象。它可以像爲每個對象擁有一個屬性一樣簡單。

1

在過去,我通過使用第三個「容器」模型來實現這一目標。

public class MainModel 
{ 

    public ProductModel productModel {get;set;} 
    public DeliveryModel deliveryModel {get;set;} 

} 
相關問題