如何在 C# 中从 SQL table 填充下拉列表
How to populate a drop-down list from a SQL table in C#
我的 SQL 数据库中有一个 table,并在 ASP.NET 核心上使用 MVC:
CREATE TABLE [dbo].[ProgramVersion] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[Ver] VARCHAR (10) NOT NULL,
[Released] DATETIME NOT NULL
);
很简单。我有一个脚手架 Edit.cshtml 文件,有一个用于编辑来自不同 table 的记录的表单。我只想使用 ProgramVersion table 中的记录来填充 HTML select 输入(即下拉列表)。
- 如何执行一个简单的查询来得到结果集?
- 如何遍历结果集并简单地将 'Ver' 字符串值放入下拉列表的选项标签中?
(在 PHP 中,这非常简单,但 C# 真的让我很沮丧。)
首先,您创建一个视图模型,它可以在您的操作方法和视图之间传输数据。为此添加 2 个属性,一个用于传递所需的选项列表,一个用于保存所选选项值
public class CreateVm
{
public List<SelectListItem> Items { set;get;}
public int SelectedItemId { set;get;}
}
现在在您的 GET 操作中,为此创建一个对象,加载 Items 属性并将其传递给视图
public ActionResult Create()
{
var vm = new CreateVm();
//Load the Items property by reading the ProgramVersion table data
vm.Items = db.ProgramVersions
.Select(x=>new SelectListItem { Value=x.Id.ToString(),
Text=x.Ver} )
.ToList();
return View(vm);
}
现在在你的视图中,它是强类型的视图模型,你可以使用 DropDownListFor
hepler 方法
@model CreateVm
@using(Html.BeginForm())
{
@Html.DropDownListFor(s=>s.SelectedItemId,Model.Items,"Select one")
<input type="submit" />
}
您可以在 HttpPost 操作方法中使用相同的视图模型作为参数
[HttpPost]
public ActionResult Create(CreatVm model)
{
// check model.SelectedItemId
// to do : return something
}
我的 SQL 数据库中有一个 table,并在 ASP.NET 核心上使用 MVC:
CREATE TABLE [dbo].[ProgramVersion] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[Ver] VARCHAR (10) NOT NULL,
[Released] DATETIME NOT NULL
);
很简单。我有一个脚手架 Edit.cshtml 文件,有一个用于编辑来自不同 table 的记录的表单。我只想使用 ProgramVersion table 中的记录来填充 HTML select 输入(即下拉列表)。
- 如何执行一个简单的查询来得到结果集?
- 如何遍历结果集并简单地将 'Ver' 字符串值放入下拉列表的选项标签中?
(在 PHP 中,这非常简单,但 C# 真的让我很沮丧。)
首先,您创建一个视图模型,它可以在您的操作方法和视图之间传输数据。为此添加 2 个属性,一个用于传递所需的选项列表,一个用于保存所选选项值
public class CreateVm
{
public List<SelectListItem> Items { set;get;}
public int SelectedItemId { set;get;}
}
现在在您的 GET 操作中,为此创建一个对象,加载 Items 属性并将其传递给视图
public ActionResult Create()
{
var vm = new CreateVm();
//Load the Items property by reading the ProgramVersion table data
vm.Items = db.ProgramVersions
.Select(x=>new SelectListItem { Value=x.Id.ToString(),
Text=x.Ver} )
.ToList();
return View(vm);
}
现在在你的视图中,它是强类型的视图模型,你可以使用 DropDownListFor
hepler 方法
@model CreateVm
@using(Html.BeginForm())
{
@Html.DropDownListFor(s=>s.SelectedItemId,Model.Items,"Select one")
<input type="submit" />
}
您可以在 HttpPost 操作方法中使用相同的视图模型作为参数
[HttpPost]
public ActionResult Create(CreatVm model)
{
// check model.SelectedItemId
// to do : return something
}