4

好的,我遇到了一个奇怪的问题,希望有人可以帮助解决

我有一个基于这个演示的 MVC 项目

http://blogs.msdn.com/hammett/archive/2009/04/23/mef-and-asp-net-mvc-sample.aspx

但是在指定强类型视图时出现问题我收到此错误

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'System.Web.Mvc.ViewPage<ForumData>'.

当您像这样指定视图的路径时,我将其追踪到必须这样做

 return View("~/Modules/Forums/Index.aspx",data);

它会给你这个错误,但如果你把视图放在正常路径下,在这种情况下是“~Views/Forum/Index.aspx ....当像这样指定返回时它工作正常

 return View(data);

那么为什么这很重要,这显然与视图引擎的工作方式以及控制器实际上是应用程序外部的事实有关......请帮助!

编辑: ForumData实际上是ForumExtention.ForumData,当我生成错误进行剪切和粘贴时我犯了一个错误,但无论如何它都会做同样的事情..我只需要了解一下..

更新:我提供的链接中的示例工作正常,因为它没有使用强类型视图...通过从这里下载来查看我正在使用的实际代码

http://mysql.netpmg.com/MVCandMEF.zip

http://mysql.netpmg.com/forumdb.zip

将 foumdb.zip 重命名为 *.bak,这是一个 SQLEXPRESS 2008 数据库备份。

4

4 回答 4

3

我找到了原因,但是 ASP.NET 中的那些类是不可插入的。

肮脏的解决方法可以在我的博客上找到:修订:ASP.NET MVC 和托管可扩展性框架 (MEF) - http://blog.maartenballiauw.be/post/2009/06/17/Revised-ASPNET-MVC-and- the-Managed-Extensibility-Framework-(MEF).aspx

于 2009-06-17T11:37:08.530 回答
0

ForumData 在可访问的命名空间中?名称需要限定吗?

于 2009-06-12T19:43:43.913 回答
0

我对MEF一无所知...但是如果您创建自己的稍微调整的视图引擎以查看不同的目录会发生什么?

例如

public class CustomViewEngine : WebFormViewEngine
{

    public CustomViewEngine()
    {
        MasterLocationFormats = new[] {
                "~/Modules/{1}/{0}.master",
                "~/Views/{1}/{0}.master",
                "~/Views/Shared/{0}.master"
            };
        ViewLocationFormats = new[] {
                "~/Modules/{1}/{0}.aspx",
                "~/Modules/{1}/{0}.ascx",
                "~/Views/{1}/{0}.aspx",
                "~/Views/{1}/{0}.ascx",
                "~/Views/Shared/{0}.aspx",
                "~/Views/Shared/{0}.ascx"
            };
        PartialViewLocationFormats = ViewLocationFormats;
    }

}

然后在 global.asax 中的 Application_Start()

ViewEngines.Engines.Add(new CustomViewEngine());

HTH,查尔斯

于 2009-06-15T01:50:49.740 回答
0

我下载你的样本。我将论坛索引移至主网络应用程序中的 utils。它工作得很好。

public ActionResult Index()
        {
            ViewData["forums"] = _forumService.GetEnabledForumsRecentActivity();

            return View("~/Utils/Index.aspx");
           // return View(ViewRoot + "Index.aspx");
        }

您将它放在示例目录中的哪些特定位置?

于 2009-06-15T14:57:00.233 回答