基本的に、リクエストごとにViewData/ViewBagにデータを挿入したいと思います。
1004 次
1 に答える
2
ASP.NET MVCでは、これはアクションフィルターになります。また、グローバルに実行する場合は、グローバルアクションフィルターとして登録できます。このように、すべてのコントローラーアクションに適用されるため、個別に装飾する必要はありません。
したがって、フィルターは次のように定義できます。
public class GlobalViewBagInjectorActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.Controller.ViewBag.Foo = "bar";
}
}
RegisterGlobalFilters
のメソッドに登録しますGlobal.asax
:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new GlobalViewBagInjectorActionFilter());
}
これで、すべてのビュー内でプロパティを使用できますViewBag.Foo
。
ただし、ほとんどの場合、子アクションViewBag
は、この弱い型のViewBagといくつかのマジックストリングに依存する代わりに、強い型のビューモデルを渡すことができるためよりも優れた代替手段です。
于 2012-07-18T09:56:55.713 に答える