0
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不包含此参数的操作。

但我想知道它如何将值绑定到 BController 的 Index 操作(假设我有它)的 HasEditPermission 参数?

请有人告诉我如何直接在视图中访问它?(我知道在索引中使用 ViewBag 是一种选择)

4

1 回答 1

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、Cookie 和 ServerVariables 项的组合集合,而不是 RouteValues。

@Html.Action("Index", "BController", new { HasEditPermission = true })

HasEditPermission是一个RouteValue

你也可以试试这样的

ViewContext.RouteData.Values["HasEditPermission"]

在您的视图和后续子操作视图中也是如此..

于 2013-09-05T07:44:06.503 回答