首页 > 解决方案 > 在下拉列表中选择默认值并传递 id MVC 下拉列表

问题描述

我使用了下拉列表的模型,

> public class Items
>     {
>         public int itemcategoryid { get; set; }
>         public string itemcategory { get; set; }
>         public int Itemsubcategoryid { get; set; }
>         public string Itemsubcategoryname { get; set; }
>     }

在控制器代码下方

>             ItemViewModel catVM = new ItemViewModel();
>             List<Items> catlist = catVM.GetCategoryInfo();
>             ViewBag.categorylist = catlist;

使用下面的 HTML 代码绑定下拉列表后,下拉列表已填充并选择默认名称作为 itemcategory 但未传递 itemcategory 的 id 仅传递 itemcategory 名称用于 POST。

 @Html.DropDownListFor(model => model.itemcategory, new SelectList(ViewBag.categorylist, "itemcategory", "itemcategory",  Model.itemcategory))

如果我在 HTML 代码下方使用其传递值但未选择默认名称

  @Html.DropDownListFor(model => model.itemcategory, new SelectList(ViewBag.categorylist, "itemcategoryid", "itemcategory", Model.itemcategory))

使用下面的代码检索数据

using (OracleCommand cmd = new OracleCommand("PS_Category", conn))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    conn.Open();
                    OracleDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Items listitems = new Items(); ;
                        listitems.itemcategoryid = Convert.ToInt32(reader["CATID"]);
                        listitems.itemcategory = reader["CATNAME"].ToString();
                        items.Add(listitems);
                    }
                }

实际上我想选择默认名称并传递他们的 id 怎么可能呢?

标签: asp.net-mvcmodel-view-controllerrazordropdownhtml-select

解决方案


对于您使用它的多个下拉值。对于插入值

ViewBag.DocumentId = new SelectList(_documentCategoryService.GetAll().OrderBy(a => a.Name), "Id", "Name");

对于编辑,您可以使用它。

ViewBag.DocumentId = new MultiSelectList(_documentCategoryService.GetAll(), "Id", "Name", _documentCategoryService.GetAllByExportId((int)id).Select(a => a.DocumentCategoryId).ToArray());

查看部分:

 <div class="row-fluid">
                <div class="span12">
                    <div class="control-group">
                        <label class="control-label">Documents Require</label>
                        <div class="controls controls-row">
                            @Html.DropDownList("DocumentId", null, htmlAttributes: new { @placeholder = "Select Documents", @class = "span6 chzn-select documentCategories", @tabindex = "8", @multiple = "multiple", @name = "DocumentId" })
                        </div>
                    </div>
                </div>
            </div>

对于单个 DropdownValue。

ViewBag.BranchId = new SelectList(_branchService.GetAllByOrganizationId((User as CustomPrincipal).DefaultOrganizationId), "Id", "Name");


ViewBag.BranchId = new SelectList(_branchService.GetAllByOrganizationId((User as CustomPrincipal).DefaultOrganizationId), "Id", "Name", exportLetter.LcTransctionDetails.Transactions.BranchId);

<div class="span4">
                    <div class="control-group">
                        <label class="control-label">Branch</label>
                        <div class="controls controls-row">
                            @Html.DropDownList("BranchId", null, htmlAttributes: new { @class = "form-control", @id = "Branches" })
                        </div>
                    </div>
                </div>

推荐阅读