【问题标题】:ASP MVC TempData value in partial view error部分视图错误中的 ASP MVC TempData 值
【发布时间】:2016-06-29 08:28:23
【问题描述】:

我有以下常量定义如下:

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

如果我直接在部分内部添加以下 sn-p 是否有效?

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

【问题讨论】:

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


    【解决方案1】:

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

    如果没有你引用的sn-p,你的部分视图是否以

    @using MyProject.Constants
    

    ?

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

    【讨论】:

    • 不,部分视图不是以@using MyProject.Constants 开头的,我需要包含它吗?
    • 有没有一种方法可以包含这些常量,而不必在每个局部视图中定义 @using?我只想在 _layout.cshtml 中定义一次。
    • @ozzii 您可以在views 文件夹的web.config 中定义全局使用。 (您会看到 System.Web.Mvc 和一些其他命名空间默认包含在内。)
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2013-07-26
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多