Czy to prawda, że można załadować View z dowolnego miejsca bez implementacji niestandardowej VirtualPathProvider
w MVC 3.0?Brzytwa ASP.NET MVC 3.0, ładowanie Widok z dowolnego miejsca po wyjęciu z pudełka?
Jeśli to prawda, jak to zrobić?
W zasadzie to nie jest problem do realizacji niestandardowych VirtualPathProvider
które załadować Widok z dowolnego miejsca, ale moja implementacja działa tylko w MVC 2.0 i nie działa wih MVC 3.0, dziobowy jakiegoś sposobu powodu GetFile
nowsze nazwie dla nie istniały widoków w MVC 3,0 i w tym przypadku jestem coraz "Server Error in '/' Application.
"
Śledziłem ten sam kod dla mojego zwyczaju VirtualPathProvider
stąd: http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/
UPDATE 1
OK id id rozwiązać mój problem z moim zwyczajem VirtualPathProvider
po kładę rejestrację mojego zwyczaj VirtualPathProvider
dostawcy pierwszej linii w Application_Start()
protected void Application_Start()
{
//Should be first line before routes and areas registration.
HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Po rejestracji niestandardowej VirtualPathProvider w Global.asax.cs
folowing po AreaRegistration.RegisterAllAreas();
lub RegisterRoutes(RouteTable.Routes);
METODA override VirtualFile GetFile(string virtualPath)
przyzwyczajenie praca dla " widoki wirtualne ".
UPDATE 2
nie oznacza to, że zajęcia RazorView
i RazorViewEngineRender
jest odpowiedź?
UPDATE 3
Jeśli mam ciąg znaków reprezentujący moim zdaniem brzytwa, który nie istnieje w systemie plików (np przechowywać widoki brzytwa w bazie danych) jak mogę uczynić to za pomocą tego rodzaju podejścia http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/
Na przykład ciąg znaków z moim zdaniem wygląda następująco:
"@{
ViewBag.Title = ""About Us"";
}
<h2>About</h2>
<p>
Put content here.
</p>"
UPDATE 4
teraz widzę, aby móc użyć @Html.<something>
, należy zaimplementować niestandardową bazę szablonów. Przykładowa implementacja HtmlTemplateBase<T>
może być tutaj źródłem http://www.fidelitydesign.net/?p=239, ale nie będzie działać z RazorEngine v2, pomyślnie otrzymuję szablon skompilowany, a następnie po załadowaniu zestawu metoda public override void Execute()
nie zostanie wykonana Otrzymuję błąd: Metoda lub operacja nie jest zaimplementowana (stacktrace: http://tinypic.com/r/dcow4/7)
Aby uzyskać "publiczny nadpisanie modelu T", zmieniłem deklarację "publicznego modelu TModel" na "publiczny wirtualny model TModel" w "publicznej klasie abstrakcyjnej TemplateBase: TemplateBase, ITemplate" . Może być jeszcze kilka innych zmian? Lub coś w HtmlTemplateBase<T>
należy zrobić w inny sposób?
Również spojrzeć na http://stackoverflow.com/questions/3367106/pulling-a-view-from-a-database-rather-than-a-file – Buildstarted