Получить доступ к дочернему параметру действия в его представлении
public class AController : Controller
{
public ActionResult Index()
{
return View();
}
}
и представление индекса идет как
...
@Html.Action("Index", "BController", new { HasEditPermission = true })
...
BControler идет как
public class BController : Controller
{
public ActionResult Index()
{
return PartialView();
}
}
и это частичное представление индекса выглядит так
...
@if (!string.IsNullOrEmpty(Request.Params["HasEditPermission"]) && bool.Parse(Request.Params["HasEditPermission"]))
{
// some html rendering
}
...
здесь, когда я делаю Request.Params["HasEditPermission"]
в частичном представлении я получаю ноль.. но если я включу HasEditPermission
в качестве параметра для моего Index
действие BController
тогда я получаю значение..
Я думаю, я не получаю это от Request.Params
потому что фактический запрос AController
Index
действие, которое не включает этот параметр.
Но мне интересно, как это связывает значение с параметром HasEditPermission действия Index (предположим, если он у меня есть) BController?
Пожалуйста, может кто-нибудь сказать мне, как я могу получить к нему доступ непосредственно в представлении? (Я знаю, что использование ViewBag в Index является вариантом)
1 ответ
Ты можешь использовать ValueProvider.GetValue("HasEditPermission").RawValue
чтобы получить доступ к значению.
контроллер:
public class BController : Controller
{
public ActionResult Index()
{
ViewBag.HasEditPermission = Boolean.Parse(
ValueProvider.GetValue("HasEditPermission").RawValue.ToString());
return PartialView();
}
}
Посмотреть:
...
@if (ViewBag.HasEditPermission)
{
// some html rendering
}
...
Обновить:
Request.Params
получает комбинированную коллекцию элементов QueryString, Form, Cookies и ServerVariables, а не RouteValues.
В
@Html.Action("Index", "BController", new { HasEditPermission = true })
HasEditPermission
это RouteValue
,
Вы также можете попробовать что-то вроде этого
ViewContext.RouteData.Values["HasEditPermission"]
в ваших представлениях и последующих дочерних действиях.