我是新來的MVC,企圖選擇包含兩個對象,返回一個強類型的視圖模型數據使用存儲庫模式,ASP.net MVC.2返回多個對象,以強類型的視圖模型
即時得到一個一直堅持最好的辦法是,
這兩個表是由一個客戶ID字段,我有一個存儲庫接口設置,並強制類型的視圖模型,包含屬性客戶和客戶網站對象,我需要的是顯示客戶網站列表以及客戶表中的相關客戶名稱。
在顯示模板我有以下
<%= Html.DisplayFor(x => x.Customers.CustomerName) %>
<%= Html.DisplayFor(x => x.Customers.Site.AddressLine1) %>
我有這顯示模板工作,但我的模型是空的。
當IM感到困惑是如何定義的接口和存儲庫,以及如何將數據返回到我的模型這個數據,只返回我的界面我的客戶我用這個列表
IQueryable<Customer> Customers { get; }
然後一個簡單的LINQ選擇。
但是,由於該數據將包含客戶和客戶網站我不確定如何在界面中定義這個數據?
也將一個LINQ連接是一個合適的方法將此數據返回到我的viewmodel?像
var Customers =
from c in customers
join cs in customerSites on c equals cs.CustomerId into ps
from p in ps
select new { Customer = c, cs.CustomerName };
UPDATE =========
這是我使用的是stronly輸入到顯示模板視圖模型的代碼,
public class CustomerViewModel
{
public int Id { get; set; }
public string CustomerName { get; set; }
public string PrimaryContactName { get; set; }
public SiteViewModel Site { get; set; }
}
它如何在存儲庫/控制器中填充模型,使兩個對象都顯示在我正在努力的列表中。
@ dav1dMclean,感謝您的建議,我使用LINQ to sql進行數據訪問,我的數據存儲在SQL數據庫中。它的數據訪問部分im正在努力,我用我的viewmodel更新了這個問題。 – Liam
ahh好的,(你可能想讓你的視圖模型從基地繼承..永遠不知道什麼時候你需要添加網站範圍內的東西..)。 –
我沒有使用Linq到SQL,但除非我誤解了..你的查詢將帶回一個對象與你的表中的數據對嗎?因此Customers.CustomerName可能會提供客戶名稱?我不知道也許我是老帽子,但我會考慮一個存儲過程和一個正確結構的類。然後運行sp到列表中或鍵入你的新類。那麼只需根據需要使用該數據?我喜歡我的DA儘可能簡單快捷(因此我不使用Linq to SQL:p) - > –