这个问题可能有一个非常基本的答案,但我是Entity和MVC的新手,我已经习惯了基础知识。
我正在尝试使用服务器下拉列表为主表站点自动生成MVC控制器。好像我需要这样的模型:
public class Sites
{
public TTSites TTSites { get; set; }
public List<servers> server { get; set; }
public Sites()
{
server = new List<servers>();
}
}
这是使用TTSites和服务器类与字符串服务器 但是,如果我将其设置为我的模型类,将我的实体数据库设置为数据上下文,则表示我需要定义一个键。我应该使用基类而不是模型或什么?我需要在模型或基类中设置一些内容吗?
答案 0 :(得分:0)
好像你有一些术语混淆了。您可以在控制器类中对控制器操作进行编码,并且路由引擎根据URL确定要调用的控制器操作。例如,如果您的HomeController
类具有默认的Index
操作,则可能如下所示:
public ActionResult Index()
{
// code here
}
如果您使用这样的网址访问您的网站,则可以使用默认路由调用(假设您的网站可以通过www.mysite.com
网址点击:
http://www.mysite.com/Home
这会让你进入控制器中的Index
动作。
通常,人们会使用视图模型在UI端使用,并且将使用视图本身所需的数据来填充。如果您有两个实体,例如TTSite
和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
)。
一旦你有一个控制器动作和一个查看和工作,你可以转向将视图模型数据变成一个可用于下拉列表的表格,并从那里开始。