【问题标题】:ASP.NET Razor C# SQL Database Dropdown ListASP.NET Razor C# SQL 数据库下拉列表
【发布时间】:2013-09-04 17:52:39
【问题描述】:

我希望有人可以帮助我。我确信这很简单,但是我花了很多时间寻找答案,但似乎没有任何效果。我在 Microsoft WebMatrix 中有一个带有 Razor/C# 代码和 HTML 标记以及基本 SQL 表的 CSHTML 文件。我想放置一个显示 SQL 查询结果的下拉列表。下面是我的代码。

@{

var db = Database.Open("QualityMonitoring") ;
var listAgent = "SELECT Agent FROM Data";

}

如何创建下拉列表以在我的标记中显示结果?

任何帮助将不胜感激。

【问题讨论】:

  • 你的下拉列表的名称是什么

标签: c# asp.net sql razor webmatrix


【解决方案1】:

您必须创建一个 SelectedListItem 列表并将下拉列表绑定到它。将代码扩展为:

@{
    var db = Database.Open("QualityMonitoring") ;
    var listAgent = "SELECT Agent FROM Data";

    List<SelectListItem> agentdropdownlistdata = new List<SelectListItem>();
    bool isSelected = false;
    foreach(var item in db.Query(listAgent)){   
        agentdropdownlistdata.Add(new SelectListItem
        {
            Text = item.AgentName,
            Value = item.AgentID.ToString(), 
            Selected = isSelected
        });
    }
}

并且在标记中使用 html helper 来绑定数据:

 @Html.DropDownList("Agents", agentdropdownlistdata)

【讨论】:

  • 感谢 afzalulh,我已应用您的代码和标记,但出现以下错误。编译器错误消息:CS1526:类型后的新表达式需要 ()、[] 或 {} 源错误:第 7 行:foreach(var item in db.Query(listAgent)){ 第 8 行:isSelected = false;第 9 行:agentdropdownlistdata.Add(new SelectList Item 第 10 行:{ 第 11 行:Text = item.AgentName,
  • 抱歉错字!它应该是 SelectListItem,而不是 SelectList Item。我已经编辑了我的答案。
  • 谢谢。虽然我不得不注释掉 Value = item.ID.ToString(),但这很有效,因为这会在渲染时产生错误。我将如何使它不选择默认值?例如,它可以说“请选择...”?
  • 你可以在foreach循环之外添加一个新的SelectListItem:agentdropdownlistdata.Add(new SelectListItem {Text = "Select one",Value = "0", Selected = true });
  • 谢谢。完美运行!
【解决方案2】:

试试这个,如果问题得到解决,告诉我:

DropDownlist.DataSource = listAgent;

【讨论】:

  • 感谢您这么快回复。 listAgent 是包含 SQL 语句的变量。我是否将您的建议放在代码或标记中?我不确定如何在标记中创建下拉列表。因为它是 Razor,所以我在想一些需要 @ 在它之前的东西。
  • 好吧,我对剃须刀不太熟悉,但我上面展示的代码必须放在代码部分而不是标记中
  • @afzalulh,我怎样才能给这个下拉列表一个名字,以便我可以将它的值传递给一个变量?
  • 在设计视图中选择控件并在属性中更改其名称。
猜你喜欢
  • 2016-04-01
  • 2020-06-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多