爲了給你一個你應該熟悉的例子,想象你正在Asp.Net MVC中構建一個Facebook Wall頁面。在牆上,有不同類型的帖子(即狀態更新,照片,視頻,鏈接等等),它們都顯示在牆上,它們的渲染方式不同,具體取決於它們是什麼類型的帖子。在我看來,最好的方法是使用多態性,我通過Post類型進行foreach,並調用每個子類型實現的呈現方法,在Web窗體的代碼隱藏中做了這樣的事情,但我無法弄清楚如何在MVC做到這一點沒有混合的擔憂,短期如果有else塊的一個巨大的名單。Asp.Net MVC內部視圖多態性
@foreach(Post post in Model.Posts)
{
if(post is A)
{
<div>Different Content</div>
}
else if(post is B)
{
<div>Different Content</div>
}
else if(post is C)
{
<div>Different Content</div>
}
}
,而不是僅僅
@foreach(Post post in Model.Posts)
{
post.render();
}
我如何獲得像第二部分那樣更加可靠的東西?
感謝您的回覆。我無法理解你的前兩點。你可以重新說明一下嗎?這不是隻顯示一個職位,而不是一個集合? – quitstalin 2012-03-23 01:07:33
我已經更新了我的答案,希望能夠證明我的觀點。 – 2012-03-23 01:23:00
是的,幫助,我真的很喜歡這個解決方案的理論。我將不得不看看它是如何在我的項目中起作用的。非常感謝 – quitstalin 2012-03-23 01:48:44