2013-04-11 100 views
0

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

我想展示他们的Thew观点是完全无关的。这些是通用的下拉菜单,例如语言,货币和星期几等,例如:“美元”,“840”,“货币”

请注意,我的例子非常通用,实际上有自定义数据在桌子里。

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

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

+0

将列表放入您的ViewModel作为属性。引用DropDownForList中的属性。或者,您可以将列表放入ViewBag中并从那里引用它。 – 2013-04-11 20:16:28

+0

我想我无法弄清楚如何访问数据,我是否需要创建一个上下文来访问它? – chongo2002 2013-04-11 20:23:40

+0

这里有一些很好的一般指导:http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx。虽然它有点过时,但它应该给你一个总体思路。 – 2013-04-11 20:25:05

回答

1

根据你的问题和你留下的附加评论,听起来你对MVC相对陌生,以及对Entity Framework不熟悉?在这种情况下,我强烈建议在http://www.asp.net/mvc 上提供免费的Pluralsight视频。

检查右侧边栏上的链接,听起来像“使用数据第1部分”是你所追求的。它们是很好的引物,可以让你快速启动。看起来视频已经更新了VS2012和MVC4,但是如果你仍然在VS2010和MVC3上,他们仍然有旧版本可用here。只需点击“从Pluralsight培训”链接。这就是说,如果你已经安装了VS的NuGet,你可以添加一个快速参考实体框架,并有一个代码第一上下文运行真正快速。如果添加一个连接字符串,以你的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; } 
    } 
} 

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

从那里你可以把你的模型附加到你的视图,并回答你原来的问题我会使用一个视图模型,暴露你的dd_data列表作为属性,单个dd_value为选定的属性,然后使用一个DropdownFor创建你的选择列表。

视图模型:

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

某处在查看:

​​

希望这将让你开始,但认真看那些PluralSight视频的,他们是伟大的。干杯。