1

ユーザーがドロップダウンリストから「名前」を選択できる Create.chtml にドロップダウンリストを作成しようとしています。対応する値 (ID) をコントローラーに送り返してデータベーステーブルに追加する必要があります。

何が機能しているか: Create.chtml ビュー ページに NAMES を含むドロップダウン リストが表示されます。

何が機能していないか:ビューのドロップダウンリストから NAME を選択すると、その値 (ID) が Controller に渡されない

以下のコードを参照して、どこが間違っているのかを特定してください。

Controller:

//
        // GET: /OrganizationCodes/Create

        public ActionResult Create()
        {

            var orgzList = (from x in db.TABLE_ORGANIZATIONS
                                                   select new TABLE_ORGANIZATIONSDTO
                                                   {
                                                       ID = x.ID,
                                                       NAME = x.NAME
                                                   }).OrderBy(w => w.NAME).ToList();

            ViewBag.orgz = new SelectList(orgzList, "ID", "NAME");

            return View();
        }

        public class TABLE_ORGANIZATIONSDTO
        {
            public string NAME { get; set; }
            public int ID { get; set; }
        }

        //
        // POST: /OrganizationCodes/Create

        [HttpPost]
        public ActionResult Create(TABLE_CODES dp)
        {
            try
            {
                using (var db = new IngestEntities())
                {


                    TABLE_CODES codes_temp = new TABLE_CODES();
                    ViewBag.orgz = codes_temp;

                    db.AddToTABLE_CODES(dp);
                    db.SaveChanges();
                }

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

===================================================================================
View: 'Create.chtml'

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>

         <div class="editor-field">
            @Html.DropDownList("orgz", (SelectList)ViewBag.orgz)
        </div>      

        <p>
            <input type="submit" value="Create" />
        </p>

   </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

編集1:

ここに画像の説明を入力

編集2:

テーブル「TABLE_CODES」に追加する必要があるテーブル「TABLE_ORGANIZATIONS」からIDとして値を持つNAMESのドロップダウンリストを持つビューを作成しようとしています->「MANAGER」列を数値として

4

1 に答える 1

3

アクションCreate[HttpPost]バージョンで、選択した名前の値が表示されると予想される変数はどれですか?

要素に id = "orgz"という名前を付けまし<select>たが、"orgz" という名前のアクション メソッドへのパラメーターがありません。

編集:

あなたがするとき:

@Html.DropDownList("orgz", (SelectList)ViewBag.orgz)

最終的に次のような HTML になります。

<select id="orgz" name="orgz">...</select>

フォームがコントローラ アクションに戻されると、要素から選択されたアイテムを配置する「orgz」という変数を見つけようとします<select>。あなたはこれを見逃しています。

[HttpPost]のバージョンを変更してCreate、「orgz」変数を含めてみてください。

public ActionResult Create(TABLE_CODES dp, int orgz)
{
  // orgz will contain the ID of the selected item
}

次に、変数「orgz」には、ドロップダウン リストから選択したアイテムの ID が含まれます。

于 2013-06-07T14:52:57.963 に答える