¿Cómo puedo cargar un recurso incrustado como ITemplate? El método LoadTemplate() solo toma una ruta virtual de cadena, y obviamente esto no funcionará para los recursos integrados.Cargar plantilla del recurso incrustado
Respuesta
Suponiendo que sus plantillas están incrustadas y deben permanecer así (lo cual creo que es posible que desee reconsiderar), aquí hay una función que escribí hace tiempo que he utilizado con éxito muchas veces al tratar con archivos incrustados (en su mayoría archivos .sql). Convierte un recurso incrustado en una cadena. Es posible que deba escribir su plantilla en el disco.
public static string GetEmbeddedResourceText(string resourceName, Assembly resourceAssembly)
{
using (Stream stream = resourceAssembly.GetManifestResourceStream(resourceName))
{
int streamLength = (int)stream.Length;
byte[] data = new byte[streamLength];
stream.Read(data, 0, streamLength);
// lets remove the UTF8 file header if there is one:
if ((data[0] == 0xEF) && (data[1] == 0xBB) && (data[2] == 0xBF))
{
byte[] scrubbedData = new byte[data.Length - 3];
Array.Copy(data, 3, scrubbedData, 0, scrubbedData.Length);
data = scrubbedData;
}
return System.Text.Encoding.UTF8.GetString(data);
}
}
Ejemplo de uso:
var text = GetEmbeddedResourceText("Namespace.ResourceFileName.txt",
Assembly.GetExecutingAssembly());
Quería que la plantilla se incrustara, ya que se usa como la plantilla predeterminada para un control y es parte de un estilo específico. – MadSkunk
Su control debe parecer que:
public class Con : Control
{
public Template Content { get; set; }
protected override void CreateChildControls()
{
base.CreateChildControls();
Content = new Template();
// load controls from file and add to this control
Content.InstantiateIn(this);
}
public class Template : ITemplate
{
public void InstantiateIn(Control container)
{
// load controls
container.Controls.Add((HttpContext.Current.Handler as Page).LoadControl("Emb.ascx"));
}
}
}
A continuación, el archivo incrustado:
<%@ Control Language="C#" %>
<asp:TextBox ID="Tb" runat="server" />
A continuación, cuando se utiliza el control se carga el recurso incrustado, por lo que usar:
<%@ Register Assembly="TestWeb" Namespace="TestWeb" TagPrefix="c" %>
<c:Con runat="server" />
Creará un TextBox.
Si está intentando acceder a un archivo dentro de una DLL, see this implementation of VirtualPathProvider.
- 1. Cargar imagen del recurso incrustado
- 2. Nombre del recurso incrustado
- 3. Cargar un ensamblado desde un recurso incrustado
- 4. Recurso incrustado en C++
- 5. Cómo cargar un recurso de un archivo JAR incrustado
- 6. Reproducir recurso de video incrustado como secuencia
- 7. Cómo cargar HTML/JavaScript desde el recurso incrustado en el navegador web winform
- 8. Archivo de configuración como recurso incrustado
- 9. ¿Por qué mi ScriptReference no encuentra el recurso incrustado?
- 10. ¿Cómo cargar el icono del recurso en Java?
- 11. ¿Cómo puedo verificar si existe o no un recurso incrustado?
- 12. Agregar imagen de recurso incrustado al documento MigraDoc
- 13. ¿Cómo puedo descubrir la "ruta" de un recurso incrustado?
- 14. ¿Cuál es la diferencia entre un recurso y un recurso incrustado en una aplicación C#?
- 15. Visual Studio: cómo almacenar un recurso de imagen como un recurso incrustado?
- 16. Cómo ejecutar un archivo ejecutable incrustado como recurso
- 17. Cargar un recurso png en un CBitMap
- 18. cargar un recurso contenida en un frasco
- 19. Cargar plantilla HTML con JavaScript
- 20. ¿Cuál es la diferencia entre las dos acciones de compilación "Recurso" y "Recurso incrustado" en Visual Studio 2010?
- 21. no se puede cargar taglib JSTL dentro del servidor Jetty incrustado
- 22. ¿Puedo obtener el recurso de Javascript para cargar otro?
- 23. Configurando Symfony 2 - No se puede cargar el recurso app.php
- 24. C# vista como recurso incrustado siempre muestra una vista anterior después de construir
- 25. Java web start - No se puede cargar el recurso
- 26. android No se permite cargar el recurso local: file: /// android_asset
- 27. No se puede cargar un recurso de manifiesto con GetManifestResourceStream()
- 28. Error al cargar el recurso: Carga de cuadro interrumpida: Agian
- 29. Lectura del archivo xml de un recurso
- 30. Flex e incrustado XML
Podría explicar donde 'ITemplate' proviene de? – JaredPar
@JaredPar, asp.net - Modifiqué para incluir la etiqueta. –
Cada archivo tiene una ruta. ¿Estás tratando de acceder a un archivo dentro de una DLL? – BrunoLM