我试图简单地将我选择的项目填充到绑定属性
SelectedDataSourceIDs
,但我无法弄清楚我做错了什么。
景色:
@page
@model ContosoUniversity.Pages.Analysis.IndexModel
@{
}
<h1>Analysis</h1>
<form asp-page-handler="Analyze" method="post">
<div class="form-group">
<label asp-for="SelectedDataSourcesIDs" class="control-label"></label>
<select asp-for="SelectedDataSourceIDs" class="form-control" asp-items="@Model.DataSourceNameSL" multiple>
</select>
<span asp-validation-for="SelectedDataSourceIDs" class="text-danger" />
</div>
<div class="form-group">
<input type="submit" value="Analyze" class="btn btn-primary" />
</div>
</form>
模型类:
public class IndexModel : DataSourceResourcesCompaniesSelectListModel
{
private readonly ContosoUniversity.Data.SchoolContext _context;
public IEnumerable<int> SelectedDataSourceIDs { get; set; }
private AnalysisContext _analysisContext;
public IActionResult OnGet()
{
PopulateDataSourceDropDownList(_context);
return Page();
}
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
}
}
我在
OnPost
中有一个断点,并且 SelectedDataSourceIDs
始终为空。
我尝试/测试过的内容
在
OnGet()
中,DataSourceNameSL
已正确填充为 DataTextField = "Name"
和 DataValueField = "ID"
。我可以看到并选择多个 ListItems
在查询的有效负载中,有ID
命名正确
ModelState
有效
在
OnPost()
中,DataSourceNameSL
为空,SelectedDataSourceIDs
为空
我什至尝试将类型从
IEnumerable<int>
更改为 List<int>
我做错了什么?