gpt4 book ai didi

c# - @Html.DisplayFor() 不适用于自定义模型子类

转载 作者:行者123 更新时间:2023-11-30 21:56:24 25 4
gpt4 key购买 nike

所以我有一个 MVC 应用程序来管理站点列表,并且在我的详细信息 View 中,即使 @Html.DisplayNameFor 正确呈现标签,我的模型中的子类也没有呈现任何内容。

这是工作正常的 View 代码:

<tr>
<td>
<span class="label label-info">@Html.DisplayNameFor(model => model.SiteName)</span>
</td>

<td style="text-align: center;">
@Html.DisplayFor(model => model.SiteName)
</td>
</tr>

这是 DisplayFor 不生成任何内容的代码:

<tr>
<td>
<span class="label label-info">@Html.DisplayNameFor(model => model.Version.VersionName)</span>
</td>

<td style="text-align: center;">
@Html.DisplayFor(model => model.Version.VersionName)
</td>
</tr>

这是我的站点模型:

public class Site
{
public int ID { get; set; }

[Required]
[Display(Name = "Link")]
[DataType(DataType.Url)]
public string SiteLink { get; set; }

[Required]
[Display(Name = "Name")]
public string SiteName { get; set; }

public int VersionId { get; set; }

[ForeignKey("VersionId")]
public Version Version { get; set; }
}

还有我的版本类:

public class Version
{
public int ID { get; set; }

[Display(Name = "Version")]
public string VersionName { get; set; }

public List<Site> Sites { get; set; }
}

最后,这是我 Controller 中的 Details ActionResult 方法:

public ActionResult Details(int id = 0)
{
Site site = db.Sites.Find(id);
if (site == null)
{
return HttpNotFound();
}
return View(site);
}

我的所有其他 View 都呈现得很好,只是这个详细 View 似乎没有为我的自定义类返回任何内容。

最佳答案

您需要显式加载子项(版本):

Site site = db.Sites.Find(id);
if (site == null)
{
return HttpNotFound();
}
db.Entry(site).Reference(p => p.Version).Load();
return View(site);

你也可以这样做

db.Sites.Include(s => s.Version).FirstOrDefault(s => s.Id == id);

https://msdn.microsoft.com/en-us/data/jj574232.aspx#explicit

关于c# - @Html.DisplayFor() 不适用于自定义模型子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com