【问题标题】:How to return list of multiple IDs form select2, to my controller via ViewModel如何通过 ViewModel 将 select2 的多个 ID 列表返回到我的控制器
【发布时间】:2019-03-21 01:04:33
【问题描述】:

我正在使用 Select2 控件以这种方式填充选择

ViewData["Categories"] = new SelectList(categories, "Id", "Title");

<label asp-for="Categories" class="control-label"></label>
<select asp-for="CategoriesId" class="form-control" multiple="multiple" asp-items="ViewBag.Categories"></select>

我的视图模型

[Display(Name = "Categories")]
[Required]
public List<Category> Categories { get; set; }
public List<int> CategoriesId { get; set; }

我的控制器

public async Task<IActionResult> Create([FromForm] Models.NewsAlertViewModel NewsAlertViewModel)

我尝试将 ID 返回为

public string CategoriesId { get; set; }
public List<SelectItem> CategoriesId { get; set; }

一切都以 Null 或 Count = 0 的形式出现

【问题讨论】:

  • 尝试将 public List CategoriesId 更改为 public List CategoriesId
  • 哇,就是这样。叹息,那么近,那么远。谢谢朋友。
  • 除了 type=number 之外的所有 html 表单似乎都映射为字符串。我很乐意提供帮助。
  • @TimCadieux public List&lt;int&gt; CategoriesId- 在发布表单时无法正常工作?
  • @TanvirArjel - 我无法让它用 List 返回任何东西,但它确实适用于 List

标签: c# asp.net-core jquery-select2


【解决方案1】:

基本TypeConverter 绑定类型与 html 输入中定义的相同。例如。 int,decimal 等仅适用于 &lt;input type="number"&gt; 所有其他将是字符串。而Select 有字符串值,所以你需要定义为string

您也可以编写自己的TypeConverter 来绑定您想要的内容。

Article that describe Custom Model Binding in ASP.NET Core

阅读默认模型绑定器限制

部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    相关资源
    最近更新 更多