ASP.NET MVC DropDown from Database,Binding

时间:2013-04-11 20:15:24

标签: asp.net-mvc data-binding drop-down-menu

在我的ASP.NET MVC应用程序中,我想在创建和编辑某些项目时为用户提供下拉菜单。我的数据库dd_data中有一个表,它看起来像这样:dd_name,dd_value,dd_type。

我想要显示它们的视图完全不相关。这些是用于保存诸如语言,货币和星期几等项目的通用下拉菜单,例如:“美元”,“840”,“货币”

请注意,我的示例非常通用,表中实际上有自定义数据。

我应该为每个下拉列表创建模型/控制器/视图吗?这样做的最佳方式是什么?

我见过许多使用DropDownForList的例子,但数据通常在模型中可用。在这种情况下,我想使用不相关的表来使用预设填充当前模型中的值。

1 个答案:

答案 0 :(得分:1)

根据您的问题和您留下的其他评论,听起来您对MVC相对较新,以及对Entity Framework不熟悉?在这种情况下,我强烈推荐http://www.asp.net/mvc上提供的免费Pluralsight视频 。

检查右侧边栏上的链接,听起来像“使用数据第1部分”就是您所追求的。它们是很好的引物,可以帮助您快速启动和运行。看起来视频已针对VS2012和MVC4进行了更新,但如果您仍然使用VS2010和MVC3,他们仍然可以使用旧版本here。只需点击“Pluralsight培训”链接即可。

也就是说,如果您使用VS安装了NuGet,则可以添加对Entity Framework的快速参考,并使代码第一个上下文快速运行。如果你将一个连接字符串添加到你的web.config并命名为...“MyContext”,那么你可以在你的项目中添加这样的东西:

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;

namespace MyProject.CoolNameSpace
{
    public class MyContext : DbContext
    {
        public DbSet<dd_data> DataEntities { get; set; }
    }

    public class dd_data
    {
        public string dd_name { get; set; }
        public string dd_value { get; set; }
    }
}

现在你将拥有一个工作环境。这是一个糟糕的类,这些类应该在他们的文件中有适当的命名空间等等......但是你明白了。

从那里你可以将你的模型附加到你的View上,并回答你原来的问题我会使用一个viewdodel,它将你的一个dd_data列表作为一个属性,一个dd_value暴露给一个选定的属性,然后使用一个Dropdown用于创建选择列表。

视图模型:

public class MyViewModel
{
    public List<dd_data> MyDataList { get; set; }
    public string SelectedValue { get; set; }
}

视图中的某个地方:

@Html.DropDownListFor(m => m.SelectedValue, new SelectList(Model.MyDataList, "dd_name", "dd_value"))

希望这会让你开始,但认真观看那些PluralSight视频,它们很棒。欢呼声。