首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net SelectList标签作为相关类的字段

Asp.Net SelectList标签作为相关类的字段
EN

Stack Overflow用户
提问于 2018-02-08 19:41:28
回答 2查看 66关注 0票数 0

当字段不是外键时,是否可以显示相关类的特定数据字段(一对多关系)?如果没有,如何绕过这个问题?例如:类鸽子

代码语言:javascript
复制
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; }
    }

种族

代码语言:javascript
复制
    public class Race
        {
            [Key]
            public string RaceId { get; set; }

            public string RaceName { get; set; } 

            public List<Pigeon> Pigeons { get; set; }
        }

主计长的行动:

代码语言:javascript
复制
[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);
        }

观点:

代码语言:javascript
复制
 <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?

EN

回答 2

Stack Overflow用户

发布于 2018-02-08 20:43:47

您可以使用SelectList构造函数的重载:

SelectList(IEnumerable,String,String,Object) 使用列表、数据值字段、数据文本字段和选定值的指定项初始化SelectList类的新实例。

所以,改变你的参数解决你的问题

代码语言:javascript
复制
ViewData["RaceId"] = new SelectList(_context.Set<Race>(), "RaceId", "RaceName", pigeon.RaceId);
票数 1
EN

Stack Overflow用户

发布于 2018-03-12 18:16:10

这个问题的解决办法原来是GET方法。我编辑了POST Create()方法和GET Create()方法也应该进行编辑。现在你提出的每一个解决方案都奏效了。

谢谢你的回复,不幸的是,我还不能投你的票。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48693534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档