2009-04-23 15 views
3

的有條件顯示部分說我有一個asp.net MVC的網站列出的產品的頁面。在該頁面上,我有一個「刪除」按鈕,應該只顯示插入產品的用戶。什麼是最好的方法來做到這一點?我看來

一種方式我認爲這樣做是在控制器設置一個布爾值,讓視圖知道是否該按鈕應該顯示的。喜歡的東西:

if(IsProductOwner(UserId)) 
    ViewData["CanDelete"] = true; 

然後在視圖中我可以做

<% if((boolean)ViewData["CanDelete"] == true) { %> 
    // show delete button 
<% } %> 

但有一個更好的方式來做到這一點?

回答

2

我最初的想法是,你應該至少使該產品類的功能,所以你可以去:

<% if (product.IsOwnedBy(UserId)) { %> 
    // show delete button 
<% } %> 

這消除了一些輕飄的ViewData和構建業務邏輯到您的類,而不是漂浮在邊緣上。

不過,我還沒有找到一個體面的方式做這樣的條件顯示的看法,除非觀點是顯著不同,那麼我得到的行動,以顯示根據上下文有不同的看法。

+0

一方面我真的很喜歡你的方法,因爲它是非常乾淨的。但是,因爲它是頁面上的產品列表,這意味着每個產品都需要數據庫命中。 50個產品= 50個數據庫往返。有趣的是,頁面上列出的所有產品都來自同一用戶。因此,這讓我對加入計算機[「CanDelete」(我還是不喜歡)的原液瘦:) – codette 2009-04-23 16:08:46