ASP.NET页面ViewData被覆盖(缺失)

时间:2017-12-14 21:54:41

标签: razor asp.net-core asp.net-core-2.0

_ViewStart.cshtml的内容

@{
    Layout = "_Layout";
    ViewData["IndexLink"] = Context.Request.Path != "/" ? "/Index" : "";
}

Downloads.cshtml的内容

@page
@model DownloadsModel
@{
    ViewData["Title"] = "Downloads";
}

来自_Layout.cshtml的片段

<title>@ViewData["Title"] - ABC Sofware LLC</title>

问题:

正在呈现<title>标记而没有视图标题。

疑难解答步骤:

我在_Layout.cshtml中设置了一个断点,看看是什么 ViewData包含。它有一个键而不是两个键。

@ViewData.Keys
    Count = 1
    [0]: "IndexLink"

如果我从_ViewStart.cshtml中删除ViewData["IndexLink"]行,则设置ViewData["Title"]

@ViewData.Keys
    Count = 1
    [0]: "Title"

为什么在ViewData中设置_ViewStart.html密钥在视图中中断ViewData

1 个答案:

答案 0 :(得分:4)

看起来这是一个当前的错误(请参阅https://github.com/aspnet/Mvc/issues/7675 - 计划在Core 2.2.0中修复),但目前的解决方法不是:

ViewData["Key"]

你会用

ViewContext.ViewData["Key"]
_ViewStart.cshtml和Downloads.cshtml中的

。参考

@ViewData["Key"]
_Layout.cshtml中的

对我来说似乎仍然正常。