¿Es cierto que es posible cargar Vista desde cualquier lugar sin la implementación de VirtualPathProvider
personalizada en MVC 3.0?ASP.NET MVC 3.0 Razor, carga la vista desde cualquier lugar fuera de la caja?
Si es cierto cómo hacerlo?
Básicamente no es un problema para poner en práctica la costumbre VirtualPathProvider
que cargar el Vista desde cualquier lugar, pero mi aplicación trabaja sólo en MVC 2.0 y no funciona facturan con MVC 3.0, primer plano algún método razón GetFile
nuevo llamado de puntos de vista no existía en MVC 3.0 y en ese caso me estoy haciendo "Server Error in '/' Application.
"
he seguido el mismo código para mi costumbre VirtualPathProvider
desde aquí: http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/
ACTUALIZA 1
OK ID Identificación solucionar mi problema con mi costumbre VirtualPathProvider
después de poner el registro de mi costumbre VirtualPathProvider
proveedor de primera línea en el 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);
}
Cuando el registro de VirtualPathProvider costumbre en Global.asax.cs
folowing después AreaRegistration.RegisterAllAreas();
o RegisterRoutes(RouteTable.Routes);
método método override VirtualFile GetFile(string virtualPath)
no trabajará para " Vistas virtuales ".
ACTUALIZACIÓN 2
lo hace significa que las clases RazorView
RazorViewEngineRender
y es la respuesta?
ACTUALIZACIÓN 3
Si tengo representación de cadena de mi punto de vista de afeitar que no existe en el sistema de archivos (por ejemplo, almaceno vistas de afeitar en la base de datos) ¿En qué puedo hacer que el uso de este tipo de enfoque http://buildstarted.com/2010/09/28/mvc-3-razor-view-engine-without-a-controller/
Por ejemplorepresentación de cadena de mi punto de vista se parece a esto:
"@{
ViewBag.Title = ""About Us"";
}
<h2>About</h2>
<p>
Put content here.
</p>"
ACTUALIZACIÓN 4
ahora veo, para poder usar @Html.<something>
se debe implementar TemplateBase personalizado. La muestra de implementación de HtmlTemplateBase<T>
se puede encontrar aquí http://www.fidelitydesign.net/?p=239, pero no funcionará con RazorEngine v2, estoy obteniendo la plantilla compilada satisfactoriamente, y luego de que el método public override void Execute()
cargado en el ensamblado no se ejecute, recibo un error: El método o operación no se lleva a cabo (StackTrace: http://tinypic.com/r/dcow4/7)
para hacer “public override T Modelo” sucedió lo hice declaración de cambio de “modelo público TModel” a “público TModel modelo virtual” en “TemplateBase clase abstracta pública: TemplateBase, ITemplate” . ¿Puede haber algún otro cambio que deba hacerse? ¿O algo en HtmlTemplateBase<T>
debería hacerse de otra manera?
También, busque en http://stackoverflow.com/questions/3367106/pulling-a-view-from-a-database-rather-than-a-file – Buildstarted