如何将下拉菜单项与一组外键相关联?

问题描述

我目前正在制作一个Web应用程序,以允许用户创建,编辑和存储桌面RPG角色信息。此应用程序使用ASP.NET MVC 5进行演示,并使用Entity Framework 6进行数据库访问。

当前,连接角色信息及其当前种族的数据库设计如下。

enter image description here

在创建角色期间,我希望向用户显示一个下拉列表,其中包含各个可玩种族的所有名称。但是,在发布角色创建表单时,我希望将种族的主键而不是名称本身插入到该角色的记录中。

我该如何安全地将键值与下拉列表中的比赛名称相关联?我是否需要查询数据库获取密钥,或者是否存在HTML帮助程序方法来将两者之间的关联安全地烘焙到下拉列表中?

解决方法

HTML选择选项包含文本和值。文本显示在页面上,并且值与表单数据一起提交。实际上,有一个不错的HTML帮助器方法可用于创建选择。

以下是您可能会遇到的情况的示例:

@Html.DropDownListFor(model => model.RaceId,Model.Races.Select(race => new SelectListItem
    {
        Text = race.Name,// displayed in the drop down list
        Value = race.Id,// submitted to the controller for Model.RaceId
        Selected = Model.RaceId == race.Id // optionally select one of them
    }))

您可以了解有关此方法here的更多信息。