Asp.net MVC – 从区域渲染局部视图

我创建了一个区域,可以处理我们所有开发产品中的一些通用的东西,就像登录,HTML助手等。在该区域内,我有一个局部视图,我试图在该区域之外引用。 我已经注册了该地区

public class Routes : AreaRegistration { public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Common_default", "Common/{controller}/{action}/{id}", new { controller = "Account", action = "Index", id = UrlParameter.Optional }); } public override string AreaName { get { return "MvcCommons"; } } } 

而现在在常规项目中,我正在尝试引用MvcCommons领域中的一个视图……

  

TestGrid

但我一直认为没有找到视图。 之前,在创建MVC Commons项目时,我收到了查看错误,但错误告诉我它在区域文件夹和默认视图文件夹中都有查看。 这次,我只获取默认文件夹。 有没有办法实现这个目标?

感谢大家!

我实际上不必这样做,但我猜你应该假设你应该使用Html.RenderAction() ,比如Html.RenderAction("action", "controller", new { area = "Area", model = ViewData.Model })

model必须替换为action的参数名称,但这应该有效。

编辑这将需要一个控制器和视图设置为每个操作。

需要记住的一件重要事情是,在使用RenderPartial时,您可以在当前操作的上下文中使用它。

由于您的操作不在某个区域,因此它只会查看该操作所属的控制器的View /文件夹,然后是共享文件夹。

您希望在区域和控制器之间共享并且在路径上可用的任何视图应该是根视图/共享文件夹。 实际上,如果视图可以作为部分调用,那么它可能没有理由属于某个区域。

当您想要渲染动作而不是部分动作时,可以调用区域 – 然后将当前动作的上下文更改为您调用的动作,从而允许您在该区域内返回视图。

默认ViewEngine在引用用户控件的相同区域(或根)文件夹中查找视图。 如果要创建自定义方式来使用或存储视图,建议您创建自定义ViewEngine。 请看一下这个例子: 使用Custom ViewEngine实现主题文件夹