当字段不是外键时,是否可以显示相关类的特定数据字段(一对多关系)?如果没有,如何绕过这个问题?例如:类鸽子
public class Pigeon
{
[Key]
public string PigeonId { get; set; }
[ForeignKey("RaceForeignKey")]
public string RaceId { get; set; }
public Race Race { get; set; }
public Flock Flock { get; set; }
}类种族
public class Race
{
[Key]
public string RaceId { get; set; }
public string RaceName { get; set; }
public List<Pigeon> Pigeons { get; set; }
}主计长的行动:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("PigeonId,PigeonName,RingNumber,BirthDate,Sex,Description,Achievements,FlockId,RaceId,MotherId,FatherId,UserProfileId")] Pigeon pigeon)
{
if (ModelState.IsValid)
{
var user = await _userManager.GetUserAsync(HttpContext.User);
pigeon.UserProfileId = user.Id;
_context.Add(pigeon);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["FlockId"] = new SelectList(_context.Set<Flock>(), "FlockId", "FlockId", pigeon.FlockId);
ViewData["RaceId"] = new SelectList(_context.Set<Race>(), "RaceId", "RaceId", pigeon.RaceId);
ViewData["UserProfileId"] = new SelectList(_context.UserProfile, "Id", "Id", pigeon.UserProfileId);
return View(pigeon);
}观点:
<div class="form-group">
<label asp-for="RaceId" class="control-label"></label>
<select asp-for="RaceId" class ="form-control" asp-items="ViewBag.RaceId"></select>
</div>结果是

如何将Race类包含到鸽子类以在下拉列表中显示RaceName而不是RaceId?
发布于 2018-02-08 20:43:47
您可以使用SelectList构造函数的重载:
SelectList(IEnumerable,String,String,Object) 使用列表、数据值字段、数据文本字段和选定值的指定项初始化SelectList类的新实例。
所以,改变你的参数解决你的问题
ViewData["RaceId"] = new SelectList(_context.Set<Race>(), "RaceId", "RaceName", pigeon.RaceId);发布于 2018-03-12 18:16:10
这个问题的解决办法原来是GET方法。我编辑了POST Create()方法和GET Create()方法也应该进行编辑。现在你提出的每一个解决方案都奏效了。
谢谢你的回复,不幸的是,我还不能投你的票。
https://stackoverflow.com/questions/48693534
复制相似问题