【发布时间】:2019-12-24 15:05:31
【问题描述】:
在我的一个视图中,专门为 Create 方法创建,我需要在下拉列表中显示某些事物的 Name,并且一旦选择,将它们的 Id 传递给控制器。
使用我的代码我非常接近 - 但是,我不觉得这实际上是应该做的方式。我恳请您就什么可以更好地工作向我提供建议,非常欢迎任何提示和提示!
DependencyController.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 方法的一个小sn-p。基本上,我通过存储过程连接到数据库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);
【问题讨论】:
-
在
Release类中覆盖ToString()方法对您有帮助吗? -
@PavelAnikhouski,您的意思是在
Release模型类中?我不太清楚你所说的ToString()方法是什么意思。
标签: c# html .net asp.net-core