如何从儿童行动中获得当前的控制者和行动?
我有一部分视图是通过RenderAction调用一个子操作呈现的。 如何从这个子操作中获得父控制器和操作。
当我使用..
@ViewContext.RouteData.Values["action"]
我找回儿童行动的名称,但我需要的是家长/电话行动。
谢谢
顺便说一句我正在使用MVC 3与剃刀。
如果你想从子动作本身(而不是视图)访问它,你可以使用
ControllerContext.ParentActionViewContext.RouteData.Values["action"]
find了…
怎么办-I-得到最的RouteData相关,与最父行动在-A-局部视图
ViewContext.ParentActionViewContext.RouteData.Values["action"]
如果部分在另一个部分内,除非find最顶层的父视图内容,否则这将不起作用。 你可以用这个find它:
var parentActionViewContext = ViewContext.ParentActionViewContext; while (parentActionViewContext.ParentActionViewContext != null) { parentActionViewContext = parentActionViewContext.ParentActionViewContext; }
我有同样的问题,并提出了与卡洛斯马丁内斯相同的解决scheme,除了我把它变成一个扩展:
public static class ViewContextExtension { public static ViewContext TopmostParent(this ViewContext context) { ViewContext result = context; while (result.ParentActionViewContext != null) { result = result.ParentActionViewContext; } return result; } }
我希望这会帮助有同样问题的人。
使用模型绑定来获取操作名称,控制器名称或任何其他url值:
routes.MapRoute("City", "{citySlug}", new { controller = "home", action = "city" }); [ChildActionOnly] public PartialViewResult Navigation(string citySlug) { var model = new NavigationModel() { IsAuthenticated = _userService.IsAuthenticated(), Cities = _cityService.GetCities(), GigsWeBrought = _gigService.GetGigsWeBrought(citySlug), GigsWeWant = _gigService.GetGigsWeWant(citySlug) }; return PartialView(model); }
- EF 6和代码优先迁移中相同数据库和应用程序中的多个数据库上下文
- 如何在WebApi中添加和获取Header值
- 如何在使用Layout时在视图中添加脚本src
- ASP.NET MVC 3(Razor)Ajax.ActionLink – 我做错了什么?
- MVC3 Url.Action查询string生成
- 如何在维护从ViewData获取值的同时指定Html.TextBox助手的属性?
- 在ASP.NET MVC中实现请求限制的最佳方式是什么?
- 在ASP.NET MVC中,我如何使用C#代码中的Razor @ Url.Content()助手?
- 我怎样才能安全地在自定义的WebAPI HttpMessageHandler中设置用户主体?