ASP.NET MVC:从视图访问控制器实例

我如何从视图访问控制器实例? 例如我有一个HomeController然后返回我的Index视图。 在该视图的内部,我想访问创build视图的HomeController实例。 我怎么做?

ViewContext.Controller,你需要投它。

 <% var homeController = ViewContext.Controller as HomeController; %> 

这是后Asp.Net MVC中的一些额外的皱纹:如何获得当前控制器/视图的虚拟url? 。

编辑 :这是添加一些肉马克·塞曼的build议,你保持function的人尽可能多的视图。 如果您使用控制器来帮助确定呈现的页面的标记,则可能需要使用Html.RenderAction(actionName, controllerName)方法。 这个调用将触发该操作,就好像它是一个单独的请求,并将其视图作为主页的一部分。

这种方法将有助于实施关注点分离,因为redirect的操作方法可以完全遵守表示规则。 它将需要返回一个部分视图在您的父视图中正确工作。

在我看来,你应该考虑一个视图不需要知道控制器的devise。 这个想法是,控制器处理请求,召唤一个模型,并将该模型交给视图。 在这一点上,主计长的工作已经完成。

我认为这是一个devise缺陷的迹象,如果该视图需要知道任何关于控制器。 你能分享更多关于你正在努力完成的事情吗?

我经常发现,在处理devise良好的框架(如MVC框架)时,如果感觉框架正在与您作战,您可能会以错误的方式来处理任务。 这件事发生在我身上,并且退后一步,问自己,我真正想完成的事情往往会带来新的见解。