2009-06-12 6 views
4

Ok habe ich ein seltsames Problem, das ich hoffe, jemand mitMEF Verwendung für steckbare Architektur in MVC

helfen könnte, ich habe ein Projekt MVC auf dieser Demo basiert

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

aber es hat ein Problem wenn eine stark typisierte Ansicht Angabe bekomme ich diesen Fehler

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>'. 

ich es aufgespürt, um es mit mit, wenn Sie den Pfad zu der Ansicht angeben, wie so

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

es gibt Ihnen diesen Fehler, aber wenn Sie die Ansicht unter dem normalen Weg legen würde die in diesem Fall sein „~ Views/Forum/Index.aspx .... es funktioniert gut, wenn die Rückkehr Angabe wie so

return View(data); 

also warum sollten sie es die Ansicht Motor funktioniert und die Tatsache, etwas mit der Art und Weise offensichtlich ist wichtig, dass die Steuerung an die Anwendung tatsächlich extern ist ... Hilfe bitte!

Edit: Die ForumData ist eigentlich ForumExtention.ForumData, ich habe einen Fehler gemacht, als ich den Fehler generiert hat zum Ausschneiden und Einfügen, aber es macht das gleiche, egal was .. ich brauchte nur den Punkt accross zu bekommen ..

Update: die Probe in der Verbindung I funktioniert gut, das ist vorgesehen, weil es nicht eine stark typisierte Ansicht mit ... Überprüfen sie den eigentlichen Code aus, mit dem ich spielen, indem es von hier

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

Download

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

Benennen Sie die Datei foumdb.zip in * .bak um, es handelt sich um ein SQLEXPRESS 2008 DB-Backup.

Antwort

0

ForumData befindet sich in einem zugänglichen Namespace? Muss der Name qualifiziert werden?

+0

Ja es war anzunehmen Forumextention.forumdata .. aber ich war der Fehler, dass ich hier nur zur Erläuterung meines Problems war. – dswatik

0

Ich weiß nichts über MEF ... aber was passiert, wenn Sie Ihre eigene leicht optimierte Ansichts-Engine erstellen, um in einem anderen Verzeichnis zu suchen?

z.

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; 
    } 

} 

dann in Application_Start() in der global.asax

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

HTHS, Charles

+0

Das gleiche habe ich versucht, als ich entdeckte, dass es die Ansicht nicht mochte, wo ich sie hatte ... Merkwürdig ist, dass sie irgendwo genauso lang sein kann wie unter dem Views-Ordner ... Ich verstehe es einfach nicht .. es ist ein völlig seltsames Problem. – dswatik

0

ich laden Sie Ihre Probe. Ich habe den Forenindex auf utils in der Haupt-Web-App verschoben. es hat gut funktioniert.

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

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

An welchen spezifischen Orten haben Sie es in den Verzeichnissen der Beispiele platziert?

+0

Haben Sie eine stark typisierte Ansicht verwendet? Die ViewData ["Foren"] -Methode funktioniert einwandfrei. Ich werde genau das posten, was ich gerade versucht habe. – dswatik