Я следующие константы определена следующим образом:значения ASP MVC TempData в частичном виде ошибке
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>
Но я м не в состоянии получить доступ к TempData внутри моей _SubNavigation.cshtml частичного вида:
<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();
}
Нет частичного представления не начинается с '@using MyProject.Constants', нужно ли его включать? – adam78
Есть ли способ включить эти константы, не указывая @using в каждом отдельном частичном представлении? Я хочу определить один раз только в _layout.cshtml. – adam78
@ozzii Вы можете определить глобальные значения в 'web.config' в папке views. (Вы увидите 'System.Web.Mvc', и по умолчанию добавлено несколько других пространств имен.) – Richard