更新时将所选项目分配给下拉列表 "multiple"

Assigning selected items to drop-down list on update "multiple"

我有一个 HTML.dropdown multiple select2 完美运行。当我保存值时,

但是: 在更新页面上,我必须在下拉列表中显示预先选择的值

代码如下:

<div class="col-md-6 mb-3" id="categorylist">
   <p class="mb-1 font-weight-bold text-muted mt-3 mt-md-0">Category*</p>
   @Html.DropDownList("pCategory[]", new SelectList(new admin.Models.CategoryModel().getMultipleCategoryBySP(), "cat_id", "cat_name", --placeToProvideSingleIntValue--), 
     new { @class = " form-control select2-multiple ", @data_toggle = "select2", @multiple = "multiple", @style = "width: 100%;" })
</div>

在上面的代码中,有一个占位符 --placeToProvideSingleIntValue--,我可以在其中放置它显示为预选的单个整数值。

Solution/HELP 要求: 我想将数组传递给它或以其他方式传递多个值。所以它会显示多个预先选择的值。

您必须使用 MultiSelectList 而不是 SelectList。像

@Html.DropDownList("pCategory[]", new MultiSelectList(new admin.Models.CategoryModel().getMultipleCategoryBySP(), "cat_id", "cat_name", --placeToProvideMultipleIntValue--), 
     new { @class = " form-control select2-multiple ", @data_toggle = "select2", @multiple = "multiple", @style = "width: 100%;" })

Razor-pages(靠近 Blazor thingy :D)是 Microsoft 目前最新和最现代的框架之一,所以我认为您应该尽可能使用标签助手,因为您可以获得 你可以看看示例 here

所以 .cshtml 页面上的标签组件应该看起来很简单,例如:

<select asp-for="pCategory" asp-items="items" multiple class="form-control select2-multiple" style="width: 100%;" data_toggle = "select2"></select>

项目是 MultiSelectList 对象

MultiSelectList items = new MultiSelectList(Categories, "cat_id", "cat_name", 
selectedValues);

selectedValues 整数数组。 希望它会有所帮助:)

还有一件小事超出了范围。我不认为做这样的事情很好

new admin.Models.CategoryModel().getMultipleCategoryBySP()

在您的客户端。我相信应该做的正确的事情是只将一个平面对象传递给客户端,并将整个业务 logic/conversions/mapping 东西放在后端。

干杯