1

複数のエンティティを含む ECommerceEntities という名前の EntityModel があります。このモデルを asp.net mvc のビューで使用したい場合、ECommerceEntities インスタンスをビューに渡すことができますか、または ECommerceEntities で 1 つのエンティティを渡す必要があります。

つまり :

//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 );
}

ありがとう。

4

2 に答える 2

2

可能かというと、どちらも可能です。はい、両方のオプションが機能します。ただし、ビューでサブエンティティのみが必要な場合は、サブエンティティをビューに渡すだけです。必要以上に渡しても無駄ですよね?

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

したがって、これは、誰かが http 投稿をハイジャックし、EcommerceEntities とそのサブエンティティに、注意を怠ると、選択したさまざまなランダム データを入力できることを意味します。設定するこれらのプロパティの。

そのため、MVC で作業するときは、ビューで使用されていないがビューに渡されるプロパティを保護して、誰もそれらを注入していないことを確認する必要があります。

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

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

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

于 2012-04-05T13:50:48.207 に答える
1

すべてのエンティティのリストを表示する場合 (通常は Index アクションが使用されます)、データベース コンテキストからすべてのエンティティを取得する必要があります。

public ActionResult Index()
{
    // assumes dbContext is already initialized
    ICollection<ECommerceEntities> entities = dbContext.ECommerceEntities
    return View(entities);
}
于 2012-04-05T13:50:09.040 に答える