我有主键(数据类型 nvarchar(50((的产品表,例如
100531 00001
在模型中 i 获取产品列表
public List<string> GetProductsList()
{
List<string> productsList = new List<string>();
using (Entities database = new Entities ())
{
productsList = (from product
in database.Products
select product.ID).Take(10).ToList();
}
return productsList;
}
在视图中,我显示包含产品的下拉列表
@Html.DropDownListFor(model => model.Product, new SelectList(Model.ProductsList), "-- Product --", new { @class = "form-control" } )
但是下拉列表列表中的项目显示如下
100531 00001
产品的 ID 也是"订单"表中的外键。但我无法使用产品 ID
添加新订单 100531 00001
我的问题是:我可以更改应用程序中的某些内容以显示数据库中的数据,还是必须更改数据库中的某些内容?
更新
在这里找到解决方案 如何在下拉列表中保留空格 - ASP.net MVC 剃刀视图
此Replace(" ", " ")
方法来保留下拉列表中的空格,就像下面的代码一样。
参考: http://www.dennisonpro.info/preserving-whitespace-in-dropdownlist-items-with-c-mvc-3/
public List<string> GetProductsList()
{
List<string> productsList = new List<string>();
using (Entities database = new Entities ())
{
productsList = (from product
in database.Products
select product.ID).Take(10).ToList();
}
productsList = productsList.Select(str=>str.Replace(" ", " "));
return productsList;
}
当您要将某些内容绑定到下拉列表时,我建议使用键值对列表。目前,您返回的是包含产品 ID 的字符串列表,但您应该返回产品 ID 和产品 ID 或产品 ID 和产品名称的键值对。以便您可以将下拉列表绑定为
@Html.DropDownListFor(model => model.Product,
new SelectList(Model.ProductsList, "Key", "Value"), "-- Product --",
new { @class = "form-control" } )
而不是您当前的实现
@Html.DropDownListFor(model => model.Product,
new SelectList(Model.ProductsList), "-- Product --",
new { @class = "form-control" } )
您当前实现的问题在于您的产品 ID 中有多个空格,但 html 只允许一个空格字符,除非是 .但是在数据库中,您有空格字符而不是   ;因此,在发布数据时,您只会得到 1 个与您的数据库记录不匹配的空格。因此,我建议您返回列表的键值对。