实体 - 使用下拉列表自动创建MVC控制器

时间:2013-06-13 21:31:25

标签: asp.net-mvc entity-framework entity-framework-4.1

这个问题可能有一个非常基本的答案,但我是Entity和MVC的新手,我已经习惯了基础知识。

我正在尝试使用服务器下拉列表为主表站点自动生成MVC控制器。好像我需要这样的模型:

   public class Sites
    {
    public TTSites TTSites { get; set; }
    public List<servers> server { get; set; }

    public Sites()
    {
        server = new List<servers>();
    }
   }

这是使用TTSites和服务器类与字符串服务器 但是,如果我将其设置为我的模型类,将我的实体数据库设置为数据上下文,则表示我需要定义一个键。我应该使用基类而不是模型或什么?我需要在模型或基类中设置一些内容吗?

1 个答案:

答案 0 :(得分:0)

好像你有一些术语混淆了。您可以在控制器类中对控制器操作进行编码,并且路由引擎根据URL确定要调用的控制器操作。例如,如果您的HomeController类具有默认的Index操作,则可能如下所示:

public ActionResult Index()
{
    // code here
}

如果您使用这样的网址访问您的网站,则可以使用默认路由调用(假设您的网站可以通过www.mysite.com网址点击:

http://www.mysite.com/Home

这会让你进入控制器中的Index动作。

通常,人们会使用视图模型在UI端使用,并且将使用视图本身所需的数据来填充。如果您有两个实体,例如TTSiteServer,那么您可以像这样(非常简单)示例填充Sites视图模型:

public ActionResult Index()
{
    var servers = yourDbContext.Servers.ToList();
    var ttSite = yourDbContext.TTSites.GetByID(1); // retrieve one entity by its ID value, this would be acquired dynamically based on some sort of user input rather than hard-coded
    var viewModel = new Sites(servers);
    viewModel.TTSite = ttSite;

    return View(viewModel);
}

我没有提供有关制作下拉菜单的任何内容,只是说明将数据导入视图模型,然后使用该视图模型创建视图。

请注意,您不会将Sites类用作实体,而是使用视图模型,并根据数据库中的实体设置其数据。您不会在视图模型类中设置任何主键;那些是数据模型的关注点,你可能已经在数据层中以可用的方式设置了这些实体(例如TTSite)。

一旦你有一个控制器动作和一个查看和工作,你可以转向将视图模型数据变成一个可用于下拉列表的表格,并从那里开始。