0

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

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

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

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

这是使用带有字符串服务器的类 TTSites 和服务器但是如果我将它设置为我的模型类和我的实体数据库作为数据上下文它说我需要定义一个键。我应该使用基类而不是模型还是什么?我需要在模型或基类中设置一些东西吗?

4

1 回答 1

0

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

public ActionResult Index()
{
    // code here
}

这将使用默认路由调用,如果您使用这样的 URL 访问您的站点(假设您的站点可以通过www.mysite.comURL 访问:

http://www.mysite.com/Home

这将使您进入Index控制器中的操作。

通常,人们会使用视图模型在 UI 端使用,并且会从一个实体中填充视图本身所需的数据。如果你有两个像TTSiteand这样的实体Server,你会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这些是数据模型的关注点,并且您可能已经在数据层中以可用的方式设置了这些实体(例如)。

一旦你有一个控制器动作和一个视图启动并工作,你可以转向将视图模型数据转换为下拉列表可用的表单,然后从那里开始。

于 2013-06-16T02:02:24.180 回答