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

时间:2016-06-29 08:28:23

标签: c# asp.net-mvc razor asp.net-mvc-partialview

我将以下常量定义如下:

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

如果我直接在partial中添加以下代码段,那么它有效吗?

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

1 个答案:

答案 0 :(得分:0)

  

我收到错误当前上下文中不存在“AppConstants”这个名称

如果没有您引用的代码段,您的部分视图是否以

开头
@using MyProject.Constants

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