控制器找不到视图

时间:2012-06-13 18:56:53

标签: asp.net-mvc vb.net mef

我做了一个项目,我有一个基本的DemoController

<Export(GetType(IController))> _
<ExportMetadata("controllerName", "Demo")> _
<PartCreationPolicy(CreationPolicy.NonShared)> _
Public Class DemoController Inherits Controller

    Public Function Index() As ActionResult
        Return View("~/Views/Demo/Index.aspx")
    End Function

End Class

在具有此控制器的“插件”项目中,它具有路径/View/Demo/Index.aspx。当我运行我的主要网络应用程序时,我可以转到return View行,但之后它说该文件无法找到。

为什么会这样?

我希望这对于糟糕的格式化都是有道理和抱歉的。

我应该提一下,我的.aspx文件在另一个项目中,而不是Web应用程序。我将所有内容构建到一个DLL中,然后将其放入我的Web应用程序项目中的文件夹中。我得到的错误是“视图'〜/ Views / Demo / Index.aspx'或其主人未找到或没有视图引擎支持搜索的位置。搜索了以下位置:〜/ Views / Demo / Index.aspx “

3 个答案:

答案 0 :(得分:2)

您必须注册插件的视图

使用asp.net mvc flow asp.net mvc

的流程

所以,如果您正在使用DI开发插件,那么您必须记住一些事情 - 自定义视图引擎 -custom控制器工厂

默认的ControllerFactory无法解析插件的控制器,它与viewEngine相同,你必须告诉viewEngine该视图在哪里

这是一个示例http://blog.maartenballiauw.be/post/2008/05/20/Creating-a-custom-ViewEngine-for-the-ASPNET-MVC-framework.aspx

答案 1 :(得分:2)

您说您已将所有视图嵌入到单独的项目中。使用内置视图引擎将无法正常工作。您必须按照此thread中的指定在内置视图引擎中指定视图位置,或者创建custom view engine

答案 2 :(得分:1)

~/Demo/Index

应该是正确的路线

另外,请修复那样的回报

Return View()

Return View("Index")