Asp.net mvc 实体-使用下拉菜单自动创建MVC控制器

Asp.net mvc 实体-使用下拉菜单自动创建MVC控制器,asp.net-mvc,entity-framework,entity-framework-4.1,Asp.net Mvc,Entity Framework,Entity Framework 4.1,这个问题可能有一个非常基本的答案,但我对实体和MVC还不熟悉,并且已经习惯了基础知识 我正在尝试为主表站点自动生成一个MVC控制器,其中包含一个服务器下拉列表。看起来我需要一个这样的模型: public class Sites { public TTSites TTSites { get; set; } public List<servers> server { get; set; } public Sites() {

这个问题可能有一个非常基本的答案,但我对实体和MVC还不熟悉,并且已经习惯了基础知识

我正在尝试为主表站点自动生成一个MVC控制器,其中包含一个服务器下拉列表。看起来我需要一个这样的模型:

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

    public Sites()
    {
        server = new List<servers>();
    }
   }
公共类站点
{
公共TTSites TTSites{get;set;}
公共列表服务器{get;set;}
公共场所()
{
服务器=新列表();
}
}
这是将TTSites和servers类与string server一起使用
但是,如果我将它设置为模型类,将实体数据库设置为数据上下文,它会说我需要定义一个键。我应该使用基类而不是模型还是什么?我需要在模型或基类中设置一些内容吗?

您似乎混淆了一些术语。在控制器类中对控制器操作进行编码,路由引擎根据URL确定要调用的控制器操作。例如,如果您有一个带有默认
索引
操作的
HomeController
类,它可能如下所示:

public ActionResult Index()
{
    // code here
}
如果您使用这样的URL访问您的站点(假设您的站点可以通过
www.mysite.com
URL:

http://www.mysite.com/Home
这将使您进入控制器中的
索引
操作

通常,用户会使用一个视图模型来在UI端使用,该模型会从实体中填充视图本身所需的数据。如果您有两个实体,如
TTSite
Server
,您会像这样填充
站点
视图模型,作为一个(非常简单的)示例:

我不包括任何关于下拉列表的内容,只是演示如何将数据导入视图模型,然后使用该视图模型创建视图

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

一旦有了控制器操作和视图并开始工作,就可以将视图模型数据转换为下拉列表中可用的表单,并从中开始

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);
}