无法弄清楚模型绑定 ASP.NET Core + Razor Pages 中出了什么问题

问题描述 投票:0回答:1

我试图简单地将我选择的项目填充到绑定属性

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
始终为空。

我尝试/测试过的内容

  1. OnGet()
    中,
    DataSourceNameSL
    已正确填充为
    DataTextField = "Name"
    DataValueField = "ID"
    。我可以看到并选择多个 ListItems

  2. 在查询的有效负载中,有ID

  3. 命名正确

  4. ModelState
    有效

  5. OnPost()
    中,
    DataSourceNameSL
    为空,
    SelectedDataSourceIDs
    为空

  6. 我什至尝试将类型从

    IEnumerable<int>
    更改为
    List<int>

我做错了什么?

asp.net-core data-binding razor-pages multi-select selectlist
1个回答
0
投票

在 razor 应用程序中处理模型绑定时添加

[BindProperty]
属性。

[BindProperty]
public IEnumerable<int> SelectedDataSourceIDs { get; set; }

© www.soinside.com 2019 - 2024. All rights reserved.