0

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

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

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

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

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

4

1 回答 1

1

根据您的问题和您留下的附加评论,听起来您对 MVC 比较陌生,并且不熟悉实体框架?在这种情况下,我强烈推荐http://www.asp.net/mvc上提供的免费 Pluralsight 视频 。

检查右侧边栏上的链接,听起来像“使用数据第 1 部分”是您所追求的。它们是很棒的入门书,可以让您快速启动并运行。看起来该视频已针对 VS2012 和 MVC4 进行了更新,但如果您仍在使用 VS2010 和 MVC3,他们仍然可以在此处获得旧版本。只需单击“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; }
    }
}

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

从那里您可以将您的模型附加到您的视图,并回答您的原始问题,我将使用一个视图模型,将您的 dd_data 列表之一公开为属性,为所选属性提供单个 dd_value,然后使用 DropdownFor 创建您的选择列表。

视图模型:

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 视频,它们很棒。干杯。

于 2013-04-11T22:26:39.377 回答