2009-04-23 9 views
3

私はasp.net mvcのWebサイトに製品をリストするページがあります。そのページには、製品を挿入したユーザーにしか表示されない「削除」ボタンがあります。これを行う最善の方法は何ですか?私のビューの一部を条件付きで表示する

私は、ボタンを表示する必要があるかどうかをビューに知らせるために、コントローラーにブール値を設定していたことを考えました。ような何か:

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

は、次にビューで、私はちょうど

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

を行うことができます。しかし、これを行うには良い方法はありますか?

答えて

2

私の最初の考えはあなたが行くことができるので、あなたは、少なくともProductクラスの機能をしなければならないということです。

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

これはフワッのViewDataの一部を削除し、あなたのクラスにビジネスロジックを構築するのではなく縁に浮いている。

しかし、ビューが大きく異なる場合を除いて、この種の条件付き表示を行うための適切な方法は見つかっていません。コンテキストに応じて別のビューを表示するアクションが得られます。

+0

一方、私はあなたのアプローチが非常にきれいであることを本当に好きです。しかし、これはページ上の製品のリストなので、すべての製品にデータベースヒットが必要です。 50製品= 50データベース往復。興味深いことに、ページに記載されているすべての製品は、同じユーザーのものです。だから、私はViewData ["CanDelete"](これはまだ好きではない)を追加するというオリジナルの解決策に傾いています:) – codette

+0

あなたの製品がそれを所有していると想像しているので、情報と往復は必要とされない。あなたのシステムがどのように構造化されているかによって異なります。 –

+0

実際にあなたは正しいです!これは私が行くソリューションです。ありがとう! – codette

関連する問題