1

私は MVC を初めて使用し、コードを理解するのに苦労しています。新しいコントローラーを作成し、それを使用してすべての CRUD メソッドとビュー (ビジュアル スタジオによって自動生成) を作成しましたが、コードの一部を理解できませんでした。

コントローラーで、データベースから SelectList を設定し、次のように ViewBag に入れます。

public ActionResult Create()
{    
    ViewBag.TypeID = new SelectList(db.PlacementTypes, "TypeID", "Description");
    return View();
} 

ビューでは次のようになります。

<div class="editor-label">
    @Html.LabelFor(model => model.TypeID, "PlacementType")
</div>
<div class="editor-field">
    @Html.DropDownList("TypeID", String.Empty)
    @Html.ValidationMessageFor(model => model.TypeID)
</div>

わからないのは。SelectList は一体どこから来ているのでしょうか。ViewBag への呼び出しが表示されないためです。

私は次のようなものを期待します:

@Html.DropDownListFor("TypeID", (SelectList)ViewBag.TypeID)

それは私の疑問です。ViewBag を指定せずに、MVC はどのようにして正しいリストを見つける場所を知るのでしょうか?

4

2 に答える 2

1

SelectListが提供されていないため、DropDownListに「TypeID」という名前を付けたため、コードはモデルで「TypeID」というアイテムを検索します。

したがって、SelectListを取得するためのViewBag.TypeIDの呼び出しは、舞台裏で行われています。

于 2013-01-25T00:33:15.913 に答える
0

事実:



あなたの例では、ViewBag は動的な型であるため、SelectList ViewBag をキャストする必要はありません。TypeID の SelectList 部分の機能は、 Controller

部分 で既に実行されています。 したがって、作成時に TypeID のみを呼び出すと、その下にあるすべてが既にトリガーされます。

于 2013-01-25T06:42:50.547 に答える