似乎您对某些术语感到困惑。您在控制器类中对控制器操作进行编码,路由引擎根据 URL 确定要调用的控制器操作。例如,如果您有一个HomeController
具有默认Index
操作的类,它可能如下所示:
public ActionResult Index()
{
// code here
}
这将使用默认路由调用,如果您使用这样的 URL 访问您的站点(假设您的站点可以通过www.mysite.com
URL 访问:
http://www.mysite.com/Home
这将使您进入Index
控制器中的操作。
通常,人们会使用视图模型在 UI 端使用,并且会从一个实体中填充视图本身所需的数据。如果你有两个像TTSite
and这样的实体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
这些是数据模型的关注点,并且您可能已经在数据层中以可用的方式设置了这些实体(例如)。
一旦你有一个控制器动作和一个视图启动并工作,你可以转向将视图模型数据转换为下拉列表可用的表单,然后从那里开始。