2012-04-05 2 views
1

私はいくつかのエンティティを含むECommerceEntitiesという名前のEntityModelを持っています。 asp.net mvcのビューでこのモデルを使用したい場合は、ECommerceEntitiesインスタンスを渡して、ECommerceEntities内の1つのエンティティを表示するか、渡すことはできますか?asp.net mvcで表示するにはEntityModelを渡しますか?

私は意味:

//Can I use this? 
public ActionResult Index() 
{ 
    ECommerceEntities entity = new ECommerceEntities(); 
    return View(entity); 
} 

または

//Should I use this? 
public ActionResult Index() 
{ 
    ECommerceEntities.OneEntity one_entity = new ECommerceEntities.OneEntity(); 

    //filling one_entity here and then send to view 

    return View(one_entity); 
} 

感謝。

答えて

2

あなたがかどうかを尋ねるしている場合両方を行うことは可能です。はい、両方のオプションが機能します。しかし、ビュー内でサブエンティティのみが必要な場合は、サブエンティティをビューに渡すだけです。必要以上のものを渡すのに使用しないでください。

MVCでは、ビューに渡すオブジェクト(EcommerceEntitiesなど)は、ポストからオブジェクトに渡すオブジェクトにマッピングするMVCの自動モデルバインディングによってそのプロパティをポストに設定できることを忘れないでくださいビュー。

これは、誰かがhttpポストをハイジャックすることができることを意味します。注意しないと、EcommerceEntitiesとそのサブエンティティを選択したさまざまなランダムデータで埋め込むことができます。これらのプロパティの一部が設定されるとは期待していませんでした。

MVCで作業しているときは、ビューで使用されていないプロパティを保護する必要があります。

EcommerceEntitiesを渡す場合は、エンティティがコントローラにポストバックされたときに、ホワイトリストを使用するか、MVCのバインド属性を参照してデータを保護してください。

非常に多くの余分なデータを保護する作業があるため、サブエンティティオブジェクトのすぐ外に画面が正しく表示される場合、サブエンティティが最適であると言います。

うまくいけば、これは役に立ちます。

+0

これは私の質問の回答とセキュリティに関するアドバイスです。どうもありがとう。 –

+1

あなたは非常に歓迎です:) – Matt

1

あなたは(indexアクションは通常のために使用されている)すべてのエンティティのリストを表示したい場合、あなたはおそらく、あなたのデータベースコンテキストからすべてのエンティティを取得したい:

public ActionResult Index() 
{ 
    // assumes dbContext is already initialized 
    ICollection<ECommerceEntities> entities = dbContext.ECommerceEntities 
    return View(entities); 
} 
関連する問題