c# - 在 ASP.NET MVC 和 MySQL 中通过 ODBC 绑定下拉列表
问题描述
我的问题:
尝试通过 ODBC 从 Visual Studio(ASP.NET MVC 项目)到使用 MYSQL 的远程服务器(Fishbowl)建立连接。最终目标是将数据库中的数据绑定到下拉列表。当我运行代码时,我没有从查询列中实际检索行,而是得到这样的输出:
我哪里错了?有什么建议或替代方法吗?谢谢!
控制器连接部分
DataSet ds = new DataSet();
using (OdbcConnection connfb = new OdbcConnection("DSN=Fishbowl"))
{
using (OdbcCommand cmd = new OdbcCommand("select xyz from abc", connfb))
{
connfb.Open();
cmd.ExecuteNonQuery();
OdbcDataAdapter da = new OdbcDataAdapter(cmd);
//da.Fill(dt);
da.Fill(ds);
List<AddInventoryModel> refNumList = new List<AddInventoryModel>();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
AddInventoryModel robj = new AddInventoryModel();
robj.referenceNumber = ds.Tables[0].Rows[i]["num"].ToString();
refNumList.Add(robj);
}
Adi.refNumDD = refNumList;
}
connfb.Close();
模型
public class AddInventoryModel
{
[Display(Name = "1. Reference Number: ")]
[Required(ErrorMessage = "Reference Number is required!")]
public string referenceNumber { get; set; }
public List<AddInventoryModel> refNumDD { get; set; }
看法
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.referenceNumber, htmlAttributes: new { @class = "control-label col-md-100" })
<div class="col-md-20">
@Html.DropDownListFor(model => model.referenceNumber, new SelectList(Model.refNumDD, "referenceNumber"), "Choose reference number")
</div>
</div>
}
解决方案
您正在使用不正确的SelectList
构造函数重载。
使用这个重载
public SelectList (System.Collections.IEnumerable items,
string dataValueField,
string dataTextField);
第二个参数是将用于设置 OPTION value 属性值的 value 字段,第三个参数是将用于呈现 OPTION 文本的文本字段。
由于您的控制器代码仅设置对象的referenceNumber
属性
AddInventoryModel
,因此您可以将其用于 dataTextField 和 dataValueField。
@Html.DropDownListFor(model => model.referenceNumber,
new SelectList(Model.refNumDD, "referenceNumber","referenceNumber"),
"Choose reference number")
对于渲染 SELECT 元素,我个人更喜欢SelectListItem
在我的视图模型中使用集合,而不是自定义对象的集合。
推荐阅读
- php - 使用 CP437 在 PHP 中打印扩展的 ASCII 字符
- sql - 在 Microsoft Access 的 VBA 中使用 SQL 中的 Dlookup 导致未知错误
- sql - 加快不同计数的 activerecord 查询
- tcl - Tcl / Expect 由名称管道块/缓冲区驱动的脚本意外输出
- java - 使用 HashMap 比较两个不同类型的列表
- math - 确定基于用户位置的经纬度
- command-line - ImageMagick 使用 alpha 通道来控制计算最小、最大和平均图像值
- spark-java - 请求的路由尚未在 Spark 中映射为 Accept
- c# - 我将如何计算winform中剩余的时间?
- xamarin.forms - Xamarin Forms Grid 条件 RowSpan