You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Razor Pages模型绑定问题:SelectedDataSourceIDs始终为空

问题解决步骤

1. 修正拼写不一致

视图中label标签的asp-for属性存在拼写错误(多了一个s),与模型属性名不匹配:

<!-- 原错误代码 -->
<label asp-for="SelectedDataSourcesIDs" class="control-label"></label>
<!-- 修正后 -->
<label asp-for="SelectedDataSourceIDs" class="control-label"></label>

2. 匹配表单Handler与Post方法

你的表单指定了asp-page-handler="Analyze",但Razor Pages的命名规则要求,带handler的表单需对应OnPost[HandlerName]()方法,而非默认的OnPost(),可二选一修改:

方案一:移除表单的handler属性

<form method="post">

方案二:修改模型方法名称

public IActionResult OnPostAnalyze()
{
    if (!ModelState.IsValid)
    {
        PopulateDataSourceDropDownList(_context); // 重新填充下拉数据
        return Page();
    }
    // 后续业务逻辑
    return RedirectToPage();
}

3. Post方法中重新填充下拉数据源

无论ModelState验证是否通过,返回Page()前必须重新调用PopulateDataSourceDropDownList(_context),否则下拉框会丢失选项,也会影响绑定回显:

public IActionResult OnPost()
{
    // 重新填充下拉数据
    PopulateDataSourceDropDownList(_context);

    if (!ModelState.IsValid)
    {
        return Page();
    }
    // 后续业务逻辑
    return RedirectToPage();
}

4. 初始化集合属性

将SelectedDataSourceIDs改为List<int>并初始化,避免绑定前属性为null:

public List<int> SelectedDataSourceIDs { get; set; } = new List<int>();

内容的提问来源于stack exchange,提问作者Bernhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:22:23