3

我做了一个项目,我有一个基本的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 "

4

3 回答 3

2

你必须为你的插件注册视图

使用 asp.net mvc 的流程流asp.net mvc

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

默认的ControllerFactory不能解析你插件的控制器,viewEngine也是一样,你必须告诉viewEngine那个view在哪里

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

于 2012-06-13T20:07:18.317 回答
2

您说您将所有视图嵌入到一个单独的项目中。使用内置视图引擎将不起作用。您必须在此线程中指定的内置视图引擎中指定视图位置,或者创建自定义视图引擎

于 2012-06-14T03:45:34.110 回答
1
~/Demo/Index

应该是正确的路线

另外,请像这样修复退货

Return View()

或者

Return View("Index")
于 2012-06-13T19:04:42.213 回答