将 ASP.NET Core razor 页面中的下拉列表绑定到 ado.net 存储过程

Binding a dropdown in ASP.NET Core razor page to ado.net stored procedure

我目前正在学习 ASP.NET 核心 Razor 页面,希望得到一些帮助。

我想创建一个包含存储过程结果的下拉列表。 SP 将带回两列:ID 列和名称列。

我希望用户能够从下拉列表中选择一个名称用于搜索目的,但这可以等待。

我在使用 EF Core 之前设法做到了,但是现在我正在使用 ADO.NET 和我的 owm SP,我没有问题。

到目前为止我尝试过的是:

型号

public List<SelectListItem> ProjectList { get; set; }`

下面是我试图用来从不同的 class 调用方法以获取下拉列表数据的方法`

    public IEnumerable<Projects> ProjectList()
    {
        projects = objProject.GetAllProjects().ToList();
        return projects;
    }

然后我正在考虑使用 HTML 标签助手在前端创建下拉列表,但是我无法确定如何对其进行排序。

我确实认为使用 IEnumerable 是不对的,我应该使用 IActionResult

如果有任何建议甚至提示,我将不胜感激

谢谢

要在 Asp.net 个核心剃须刀页面中填充下拉列表,您可以在页面中使用 select 标签助手,如下所示:

<select name="Id" asp-items="Model.ProjectList"></select>

然后在 PageModel

public List<SelectListItem> ProjectList { get; set; }

public void OnGet()
{
      ProjectList = GetProjectList().Select(p => new SelectListItem
      {
            Value=p.Id.ToString(),
            Text=p.Name
      }).ToList();
}
public IEnumerable<Projects> GetProjectList()
{
      var  projects = objProject.GetAllProjects().ToList();
      return projects;
}

参考:https://www.learnrazorpages.com/razor-pages/forms/select-lists