asp.net MVC 5 实体框架 - 下拉列表用于修剪空间



我有主键(数据类型 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(" ", "&nbsp;")方法来保留下拉列表中的空格,就像下面的代码一样。

参考: 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(" ", "&nbsp;"));
        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 只允许一个空格字符,除非是  .但是在数据库中,您有空格字符而不是 &nbsp ;因此,在发布数据时,您只会得到 1 个与您的数据库记录不匹配的空格。因此,我建议您返回列表的键值对。

最新更新