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"]
时,我得到null ..但如果我将HasEditPermission
作为Index
BController
Request.Params
行动的参数包含在内,那么我得到价值..
我认为,我不是从AController
获取的,因为实际请求是针对不包含此参数的Index
{{1}}操作。
但是我想知道如何将值绑定到BController的Index动作的HasEditPermission参数(假设我有它)?
请有人告诉我如何直接在视图中访问它? (我知道在Index中使用ViewBag是一个选项)
答案 0 :(得分: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"]
在您的视图和后续子动作视图中......