1

我试图在 Create.chtml 上有一个下拉列表,用户可以从下拉列表中选择一个“NAME”,并且应该将相应的值(ID)发送回控制器以将其添加到数据库表中。

什么是工作:我可以在 Create.chtml 视图页面上看到带有名称的下拉列表

什么不工作:当从视图的下拉列表中选择一个名称时,它的值 (ID) 不会传递给控制器

请查看下面的代码以确定我可能做错的地方。

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:

我正在尝试使用 NAMES 下拉列表的视图,其值为来自表 'TABLE_ORGANIZATIONS' 的 ID,它应该作为数字添加到表 'TABLE_CODES' -> 'MANAGER' 列中

4

1 回答 1

3

在您的操作Create[HttpPost]版本中,您希望在哪个变量中看到所选名称的值?

您已<select>使用 id = "orgz" 命名元素,但您的操作方法没有名为“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 回答