【问题标题】:Simple dropdown list mvc4 retrieve from DB从数据库中检索的简单下拉列表 mvc4
【发布时间】:2014-10-22 03:36:30
【问题描述】:

我正在尝试从数据库中的查询创建一个简单的下拉列表。

我已经阅读了很多关于此的内容,说实话我很困惑。这可能是我最好的教程found

模型是这样的。

public class TodoMembership
{
public int Id { get; set; }
public string UserName { get; set; }
public string UserTodoName { get; set; }
public string Category { get; set; }
}

控制器很简单。

public ActionResult Index()
{
//connection already sorted
IEnumerable<SelectListItem> items = db.TodoMemberships.Select(c => new SelectListItem
               {
                 Value = c.Id.ToString(),
                 Text = c.Category
               });
ViewBag.Categories = items;
return View();
}

这在我的 html 中。 @Html.DropDownList("Id", (IEnumerable) ViewBag.Categories)

这是我得到的错误,

LINQ to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。

【问题讨论】:

    标签: c# asp.net-mvc-4 model-view-controller


    【解决方案1】:

    使用SqlFunctions.StringConvert

    IEnumerable < SelectListItem > items = db.TodoMemberships.Select(c => new SelectListItem {
        Value = SqlFunctions.StringConvert((double) c.Id),
            Text = c.Category
    });
    

    【讨论】:

    • 我现在只剩下这个.....以下方法或属性之间的调用不明确:'System.Data.Objects.SqlClient.SqlFunctions.StringConvert(double?)' 和' System.Data.Objects.SqlClient.SqlFunctions.StringConvert(十进制?)'
    • 感谢同样有效。我今天找到了新方法!谢谢!
    【解决方案2】:
    ViewBag.Categories = new SelectList(db.TodoMemberships, "Id", "Category");
    

    这样字符串转换将在应用程序中执行,而不是在 SQL 服务器上。

    【讨论】:

    • 太棒了,这是一种享受!现在来研究如何过滤结果。
    猜你喜欢
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多