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

代码填充Razor SelectList(无数据库):下拉框加载无内容

问题解决步骤

核心问题分析

  1. 移除@page标签是错误操作:Razor页面必须通过@page标识才能被识别为PageModel驱动的页面,否则页面会被当作普通视图处理,PageModel的OnGet方法不会执行,导致Model为空,下拉框自然无法获取数据。之前的空引用异常并非@page本身导致,需排查其他原因而非移除该标签。
  2. asp-for属性绑定错误:asp-for应绑定用于存储选中值的属性,而非SelectList集合本身。原代码直接将SelectList绑定到asp-for,不符合TagHelper的使用规范。

修改后的PageModel代码(RobotSsh.cshtml.cs)

public class RobotSsh : PageModel
{
    // 存储选中值的属性
    [BindProperty]
    public string SelectedLocalWifi { get; set; }
    [BindProperty]
    public string SelectedCustomerWifi { get; set; }

    // 提供下拉选项的集合
    public SelectList LocalWifis { get; set; }
    public SelectList CustomerWifis { get; set; }

    public void OnGet()
    {
        GetNetworks();
    }
    
    public void GetNetworks()
    {
        List<string> wifiNetworks = ["Local Network", "Customer Network"];
        
        // 初始化SelectList,第二个参数为默认选中项
        LocalWifis = new SelectList(wifiNetworks, wifiNetworks[0]);
        CustomerWifis = new SelectList(wifiNetworks, wifiNetworks[0]);
    }
}

修改后的Razor页面代码(RobotSsh.cshtml)

@page
@model App.Views.Home.RobotSsh

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1>Supportinator 3000</h1>
<div>
    <!-- asp-for绑定选中值属性,asp-items绑定选项集合 -->
    <select asp-for="SelectedLocalWifi" asp-items="@Model.LocalWifis"></select>
    <select asp-for="SelectedCustomerWifi" asp-items="@Model.CustomerWifis"></select>
</div>
</body>
</html>

额外说明

  • 恢复@page标签后,如果仍出现空引用异常,需检查:
    • 页面是否放置在正确的目录(Razor页面通常放在Pages文件夹下,若放在Views/Home需确认路由配置)
    • @model指令的命名空间是否与PageModel的实际命名空间一致
    • 确保PageModel类的访问修饰符为public

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:05:07