【发布时间】:2015-07-22 16:34:32
【问题描述】:
所以我有一个 MVC 应用程序来管理站点列表,并且在我的详细信息视图中,即使 @Html.DisplayNameFor 正确呈现标签,我的模型中的任何子类都不会呈现任何内容。
这是正常工作的视图代码:
<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; }
}
最后,这是我的控制器中的 Details ActionResult 方法:
public ActionResult Details(int id = 0)
{
Site site = db.Sites.Find(id);
if (site == null)
{
return HttpNotFound();
}
return View(site);
}
我的所有其他视图都呈现得很好,只是这个细节视图似乎没有为我的自定义类返回任何内容。
【问题讨论】:
-
如果你使用“@Model.Version.VersionName”而不是 DisplayFor(),你看到了什么吗?
-
不,我已经尝试过了,但实际上得到了 Object Ref 错误 :)
-
好的...所以你的问题是版本为空
-
@Romias,是的,基于该错误,我意识到版本为空,但不确定原因。下面的答案是我的问题的解决方案,我必须将版本子显式加载到我的站点模型中。
标签: c# asp.net-mvc html-helper