ASP.NET MVC 如何通过 Id 从另一个模型中获取名称

Posted

技术标签:

【中文标题】ASP.NET MVC 如何通过 Id 从另一个模型中获取名称【英文标题】:ASP.NET MVC how to get name from another model by Id 【发布时间】:2021-12-12 13:52:16 【问题描述】:

我有一个问题,如何通过外键获取 details.cshtml 中的类别名称 - 工作模型中的 CategoryId?

work.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace InfoKiosk.Domain.Entities

    public class Work
    
        public int WorkId  get; set; 
        public string Name  get; set; 
        public string Description  get; set; 
        public int CategoryId  get; set; 
        public Category Category  get; set; 
    

category.cs

    public class Category
    
        public int CategoryId  get; set; 
        public string Name  get; set; 
    

我从下拉列表中选择的类别名称,我从 ViewBag 中填充。

details.cshtml


<dt>
    <strong>@Html.DisplayNameFor(model => model.Category):</strong> @Html.DisplayFor(model => model.???)
</dt>

【问题讨论】:

【参考方案1】:

使用这个

<dt>
    <strong>@Html.DisplayNameFor(model => model.Category.Name):</strong> @Html.DisplayFor(model => model.Category.Name)
</dt>

在您的操作中包含类别

var model=context.Set<Work>().Iclude(c=>c.Category).FirstOrDefault(w=> w.WorkId==id);
return View(model);

【讨论】:

【参考方案2】:

您可以在 ViewBag 中将其传递给视图,可能来自 Controller

string NameCategory = from c in context.Category
where c.CategoryId == work.categoryId
select c.Name

【讨论】:

以上是关于ASP.NET MVC 如何通过 Id 从另一个模型中获取名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 3 的一个解决方案中从另一个项目获取文件路径?

ASP.NET MVC:部分知道它是否从另一个页面带来请求?

ASP.NET MVC 3 ContentResult 将不接受从另一个类继承的类

从另一个页面到达控制。 ASP.NET

403 禁止:Asp.net MVC

在 2 个控制器 ASP.NET Core 3.1 MVC 之间传递 ID