0
public class AController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

そしてインデックスビューは次のようになります

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

BController は次のようになります

public class BController : Controller
{
    public ActionResult Index()
    {
        return PartialView();
    }
}

そして、この Index Partial ビューは次のようになります

...
@if (!string.IsNullOrEmpty(Request.Params["HasEditPermission"]) && bool.Parse(Request.Params["HasEditPermission"]))
{
 // some html rendering
}
...

ここで部分ビューで行うとnullになります..しかし、アクションのパラメータとしてRequest.Params["HasEditPermission"]含めると、値が得られます..HasEditPermissionIndexBController

Request.Params実際のリクエストはAController Indexこのパラメーターを含まないアクションに対するものであるため、私はそれを取得していないと思います。

しかし、BController の Index アクションの HasEditPermission パラメータに値をどのようにバインドしているのか疑問に思っています (そこにあると仮定します)。

ビューで直接アクセスする方法を教えてください。(私は、ViewBag を Index で使用することがオプションであることを認識しています)

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.ParamsRouteValues ではなく、QueryString、Form、Cookies、および ServerVariables アイテムの組み合わせコレクションを取得します。

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

HasEditPermissionですRouteValue

このようなことを試すこともできます

ViewContext.RouteData.Values["HasEditPermission"]

ビューと後続の子アクション ビューでも..

于 2013-09-05T07:44:06.503 に答える