[英]How to make a drop-down list in the view containing items from the database?
在我专门为Create
方法创建的视图之一中,我需要在下拉列表中显示某些事物的Name
,并且一旦选择,将它们的Id
传递给控制器。
使用我的代码我非常接近 - 但是,我不觉得这实际上是应该完成的方式。 我恳请您就什么可以更好地工作向我提供建议,非常欢迎任何提示和提示!
依赖控制器.cs
public IActionResult Create()
{
List<Release> releaseList = new List<Release>();
List<Phase> phaseList = new List<Phase>();
List<TaskModel> taskList = new List<TaskModel>();
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sql = "ReadReleases";
SqlCommand command = new SqlCommand(sql, connection);
command.CommandType = CommandType.StoredProcedure;
using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
Release release = new Release();
release.Id = Convert.ToInt32(dataReader["Id"]);
release.Name = Convert.ToString(dataReader["Name"]);
releaseList.Add(release);
}
}
ViewBag.Releases = releaseList;
这是来自控制器的Create
方法的一小段。 基本上,我连接到数据库,通过存储过程Select * FROM Releases
并填写最终存储在 ViewBag 中的列表。
创建.cshtml
<div class="form-group">
<label asp-for="ReleaseName"></label>
<select asp-items="@new SelectList(ViewBag.Releases)" asp-for="ReleaseName"></select>
</div>
以上是视图中的代码。 我认为这是一个问题,因为我的列表看起来像这样:
他们的号码没问题,但我错过了什么? 为什么不显示他们的名字?
所以:
Intersection.Models.Release
应该修复什么?Id
而不是Name
作为值?编辑:
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = "CreateDependency";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter
{
ParameterName = "@ReleaseId",
Value = dependency.ReleaseId,
SqlDbType = SqlDbType.Int,
Size = 50
};
command.Parameters.Add(parameter);
您可以更改控制器端代码:
ViewBag.Releases = new SelectList(releaseList, "Id", "Name");
在客户端,您可以使用:
@Html.DropDownList("Id", (IEnumerable<SelectListItem>)ViewBag.Releases, null, new { @class ="form-control" })
Gauravsa 的回答是正确的,这是另一种方法。
<select asp-items="@(new SelectList(ViewBag.Releases, "Id", "Name"))" asp-for="Id"></select>
您可以通过使用常规下拉菜单轻松获取此信息
<div class="form-group">
@Html.DropDownList("Id",new SelectList(@ViewBag.Releases,"Id","Name"),"Select")
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.