的兩個列表我有一個看法強類型,以項目類。在我的控制器中,我需要發送兩個不同的列表。有沒有更容易的方法來做到這一點,而不是創建一個具有兩個List的新類。Asp.Net MVC - 強類型查看同類型
什麼我最終要做的是對我的主頁10個項目按日期排序,以及10項依熱門程度排序。
我做了什麼
其實我去與這兩個答案的組合。我強烈地將我的視圖鍵入到用兩個列表創建的新類中。然後我強烈地將兩個部分視圖鍵入到每個列表中。可能看起來過度殺傷力,但我喜歡它的結果。
的兩個列表我有一個看法強類型,以項目類。在我的控制器中,我需要發送兩個不同的列表。有沒有更容易的方法來做到這一點,而不是創建一個具有兩個List的新類。Asp.Net MVC - 強類型查看同類型
什麼我最終要做的是對我的主頁10個項目按日期排序,以及10項依熱門程度排序。
我做了什麼
其實我去與這兩個答案的組合。我強烈地將我的視圖鍵入到用兩個列表創建的新類中。然後我強烈地將兩個部分視圖鍵入到每個列表中。可能看起來過度殺傷力,但我喜歡它的結果。
「創建具有兩個列表一個新的類」是要走的路。它被稱爲視圖模型,一旦你擁抱它,強類型視圖的力量就真正打開了。它可以是這個簡單:
public class IndexViewModel
{
public List<Item> Newest { get; set; }
public List<Item> Popular { get; set; }
}
這就是約翰建議,或不含強類型的視圖,並將它們添加到的ViewData:
ViewData["Newest"] = Newest;
ViewData["Popular"] = Popular
另一種選擇是強類型的局部視圖。
您應該既包括列出專門用於視圖的模式。
通常在我已經完成的小MVC中,我爲每個視圖都創建了一個模型,即使它們只傳遞了數據或業務層提供的相同數據,以保持兩個部分之間的分隔非常嚴格。這種設置稍微有點多,在很多簡單的情況下都不需要,但它確實使我的觀點更清晰。
一般有兩種哲學這一點。首先是採取John Sheehan的方法。您可以使用這兩個列表創建自定義視圖模型,並將其傳遞給您的強類型視圖。
二是要考慮名單「輔助」數據,並把他們的ViewData像jeef3說。但是,當您呈現列表時,您使用強類型部分。由於我的意思是在你的主視圖中,你可以調用RenderPartial(...),但是傳遞你使用的視圖數據鍵。
而且你的部分看起來像:
<%@ ViewUserControl Inherits="System.Web.Mvc.ViewUserControl<List<Item>>" %>
...
這給你強類型從內您的部分訪問該視圖的數據。