在视图中创建视图

时间:2010-11-09 23:31:23

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

我有一个相当大的ASP.NET MVC 2项目,它将控制器分成另一个项目。我想在父视图中创建一个视图。

我有ParentControllerChildController,都继承自“Controller”。我想在“ParentController”中创建一个名为“ChildController”的文件夹,并从那里添加Views。

显然,这会抛出“无法找到资源”错误。

我需要编辑控制器吗?这是路由限制吗?

(如何)可以实现这一目标?

2 个答案:

答案 0 :(得分:0)

我不确定我理解您的要求,但提供自定义视图搜索路径是通过编写自定义ViewEngine类来完成的。

但是拥有多个控制器(无论它们如何被继承)应始终是Views文件夹中每个控制器的文件夹。

我猜你正在使用Html.RenderAction方法。没关系。您的View文件夹结构仍应为:

/Views
  /Parent
    /Index.aspx
    /Whatever.aspx
  /Child
    /SubView.ascx   <- this one here is a partial view if you use RenderAction()

答案 1 :(得分:0)

默认情况下,在Views / {ControllerPrefix}文件夹中检查视图。然后在Views / Shared文件夹中。

您的文件夹需要与控制器的前缀相匹配,即:

ChildController

将从

中提取视图
/views/child/

您还可以根据来自任何控制器的应用程序路径直接引用该视图:

~/views/child/subview.ascx