【问题标题】:Populating dropdowns in Blazor/Razor using data from SQL Server使用 SQL Server 中的数据填充 Blazor/Razor 中的下拉列表
【发布时间】:2021-06-30 03:21:30
【问题描述】:

我正在尝试使用 SQL Server 中的数据填充 Razor 页面中的下拉列表,以确保用于从主表中提取数据的参数始终是最新的。我有 5 个带有 ID 的下拉列表和一个将项目添加到下拉列表的函数,但 Visual Studio 告诉我 ID 不存在。如何访问函数中的 ID 以填充列表?我尝试将代码放在 HTML 主页面和文件后面的代码中。我试图包含代码,但代码太多。

【问题讨论】:

  • 欢迎来到 SO。这样一来,这个问题就很难回答了。您使用什么技术从 SQL Server 检索数据? “ID 不存在”的确切信息是什么?请显示一些代码。
  • 有关如何提供有用代码的一些提示,请查看这篇文章:stackoverflow.com/help/minimal-reproducible-example

标签: c# html razor


【解决方案1】:

您刚才所说的几乎没有一个听起来像 Blazor 页面。在 Blazor 中,您不使用 ID 来识别对象并向其添加内容。您使用标记来包含组件,并使用布尔比较来确定是否显示每个组件,并使用 foreach 来遍历列表。

例如:

@if (IDList is not null){
    <select>
    foreach (var item in IDList){
        <option value="@item">@item.ToString()</option>
    }
}

@code {
    List<int> IDList {get; set;}

    override async Task OnInitialized(){
        IDList = DB.DoSomeLoading();
    }
}

我不需要在任何地方创建或知道我的标记中任何对象的 ID。

【讨论】:

  • 我正在尝试将我在 VS 中使用 HTML 和 C# 执行的 Web 应用程序转换为托管在 Blazor 站点上。我的下拉列表之一定义为: 我尝试通过以下方式访问它:Jurisdiction.Items.Add("All");
  • 任何帮助将不胜感激,谢谢。
  • 你必须放下对象的想法,更多地关注数据。 Web 窗体必须一次呈现整个页面并将其全部发送——因此以这种方式构建静态对象是有意义的。但 Blazor 并不真正需要回发,而且数据更具动态性。请参阅我在此处给出的示例,让我知道您缺少什么。我很乐意详细说明。
  • 当我添加 OnInitialized 行时,我得到虚拟或抽象成员不能是私有的。我如何解决它?我需要添加 using 指令吗?
  • 如果您首先输入“覆盖”,VS 应该会弹出您的选项。但无论如何,您可以使用protected override 作为您的关键字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 2020-06-01
  • 2019-04-09
  • 2013-08-28
相关资源
最近更新 更多