Gömülü bir kaynağı nasıl bir ITemplate olarak yükleyebilirim? LoadTemplate() yöntemi sadece bir dize sanal yol alır ve açıkçası bu gömülü kaynaklar için çalışmayacaktır.Şablonu gömülü kaynağından yükleme
cevap
Şablonlarınızın gömülü olduğunu ve bu şekilde kalması gerektiğini düşünürsek (ki bunu yeniden düşünmek isteyebilirsiniz), gömülü dosyalarla uğraşırken birçok kez başarılı bir şekilde kullandığım bir işlev yazdım. çoğunlukla .sql dosyaları). Gömülü bir kaynağı bir dizeye dönüştürür. Sonra şablonunuzu diske yazmanız gerekebilir.
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);
}
}
Örnek kullanım: `ITemplate` nereden geldiğini
var text = GetEmbeddedResourceText("Namespace.ResourceFileName.txt",
Assembly.GetExecutingAssembly());
Şablonun, bir denetim için varsayılan şablon olarak kullanıldığı ve belirli bir stilin parçası olduğu için gömülmesini istedim. – MadSkunk
Denetiminizin bunun gibi görünmelidir:
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"));
}
}
}
Sonra gömülü dosyası: kontrolü kullanarak Sonra
<%@ Control Language="C#" %>
<asp:TextBox ID="Tb" runat="server" />
gömülü kaynak yükleyecek ve böylece kullanarak:
<%@ Register Assembly="TestWeb" Namespace="TestWeb" TagPrefix="c" %>
<c:Con runat="server" />
Bir TextBox oluşturur.
Eğer see this implementation of VirtualPathProvider bir DLL içinde bir dosyaya erişmek için çalışıyorsanız.
- 1. Gömülü PDF gömülü yazdırma
- 2. Android: xml kaynağından tamsayı
- 3. Veri kaynağından RowCommand alın
- 4. DataGridViewImage kaynağından Veriye Kaydetme
- 5. TortoiseHG veri kaynağından kaldırılıyor
- 6. Java kaynağından UML üret
- 7. Gömülü mp3 dosyası gömülü gömülü resim dosyası alınamadı
- 8. SpringBoot Thymeleaf Şablonu Çözmüyor
- 9. Gömülü Jetty
- 10. Boolean kaynağından boole a java
- 11. , fs.createReadStream kaynağından ENOENT değil mi?
- 12. Veri kaynağından veri alma Vue.js
- 13. C++ kaynağından sınıf şeması oluşturun?
- 14. Birim testi Android, getString kaynağından
- 15. MySQL.Data kaynağını Github kaynağından açma
- 16. Tüm dizeleri resourcemanager kaynağından alın
- 17. OrientDB'de gömülü tiplerin içerisine gömülü tipler INSERT
- 18. Gömülü Formu
- 19. Gömülü Domuz
- 20. Değişken referansıyla varyant şablonu şablonu uzmanlığı
- 21. yükleme tutamaçları şablonunu eşzamansız olarak yükleme
- 22. nasıl CentOS 6.5 Ben kaynağından piton 2.7.6 yüklemiş
- 23. Gömülü Google Haritalar Hatası - Menşei
- 24. Django şablonu
- 25. django şablonu
- 26. pcap döküm dosyalarını tcpdump kaynağından birleştirme hatası
- 27. MVC: Şifre değeri sayfanın kaynağından görüldü
- 28. Python xml ElementTree bir dize kaynağından mı?
- 29. qtablewidget kaynağından csv'ye veri dışa aktarma
- 30. elasticsearch dizinindeki _rev alanım, couchdb kaynağından
açıklayabilir misiniz? – JaredPar
@JaredPar, asp.net - Etiketi eklemek için değiştirdim. –
Her dosyanın bir yolu vardır. Bir DLL dosyasındaki bir dosyaya erişmeye mi çalışıyorsunuz? – BrunoLM