Pertanyaan Bagaimana cara mendapatkan string sumber daya dari markup ASP.NET?


Hai Saya memiliki majelis yang disebut seperti X.Common.DLL. Ada beberapa file sumber daya untuk aplikasi multilanguage. Katakanlah Language.resx Language.en-US.resx .... dll ....

Saya memiliki aplikasi web yang berisi dll di atas ini sebagai referensi ...

Jadi bagaimana saya bisa menggunakan file sumber daya ini di sisi markup aplikasi web saya?

Text="<%$ Resources:Class, ResourceKey %>" tidak valid karena nama "Kelas" ada di majelis lain ...


7
2017-12-24 09:31


asal


Jawaban:


Anda dapat dengan mudah membuat kelas pembungkus yang melakukan sesuatu seperti ini

public class ResourceWrapper
{
     private ResourceManager resourceManager;

     public ResourceWrapper()
     {
         resourceManager = new ResourceManager("Namespace.Common", Assembly.Load("x.common"))
     }

     public string String(string resourceKey)
     {
         return ResourceManager.GetString(resourceKey);
     }
 }     

Menemukan nama yang benar untuk parameter pertama ke ResourceManager baru (...) terkadang agak sulit. Untuk mempermudah Anda, Anda dapat menelepon seperti ini:

Assembly.Load("x.common").GetManifestResourceNames() and check the returned results.

Jika Anda membuat pembungkus statis, Anda dapat membuat kode panggilan sumber daya sesederhana ini:

<%= Resource.String("MyResourceKey") %>

3
2017-12-24 11:01



Anda harus mereferensikan rakitan lain di web.config untuk mengekspos kontennya dalam formulir web. http://msdn.microsoft.com/en-us/library/ms164642.aspx

Edit: jawaban yang lebih detail karena komentar di bawah: Anda harus menyelesaikan bagian halaman / ruang nama dari webconfig seperti ini:

<pages>
    <namespaces>
        ...
        <add namespace="My.Fully.Qualified.Namespace"/>
    </namespaces>   
</pages>

Tentu saja perakitan yang menyediakan ruang nama juga harus dirujuk (referensi proyek, bagian web.config)

Maka Anda harus dapat menulis hal-hal seperti "<% = MyResx.MyEntry%>


0
2017-12-24 10:53