ASP 部分视图错误中的 MVC TempData 值

ASP MVC TempData value in partial view error

我定义了如下常量:

namespace MyProject.Constants
{
  public static class AppConstants
  {
    // View Bag / Temp Data Constants
    public const string CurrentAction = "CurrentAction";
    public const string CurrentController = "CurrentController";

  }
}

在我的 _layout.cshtml 文件中,我将它们设置如下:

@using MyProject.Constants
@{
    TempData[AppConstants.CurrentAction] = ViewContext.RouteData.GetRequiredString("action").ToLower();
    TempData[AppConstants.CurrentController] = ViewContext.RouteData.GetRequiredString("controller").ToLower();
 }
 <!DOCTYPE html>
 <html>
    ...
    <body>

      @Html.Partial("_SubNavigation")

    </body>
  </html>

但我无法访问我的 _SubNavigation.cshtml 局部视图中的 TempData:

 <li><a href="@Url.Action("Index", "Home")" class="@(TempData[AppConstants.CurrentController].ToString() == "home" && TempData[AppConstants.CurrentAction].ToString() == "index" ? "active" : "")">Home</a></li>

我收到错误 The name 'AppConstants' does not exist in the current context

如果我直接在局部中添加以下代码片段,它会起作用吗?

@using MyProject.Constants
@{
    TempData[AppConstants.CurrentAction] = ViewContext.RouteData.GetRequiredString("action").ToLower();
    TempData[AppConstants.CurrentController] = ViewContext.RouteData.GetRequiredString("controller").ToLower();
 }

I get error The name 'AppConstants' does not exist in the current context

如果没有你引用的片段,你的局部视图是否以

开头
@using MyProject.Constants

?

每个引用该名称空间中的名称的视图以及您需要的任何其他名称空间都需要这样做。如果您的视图中有很大一部分需要命名空间,请考虑将其添加到 Views 文件夹中 web.config 文件的全局命名空间列表中。