1.资源类别
asp.net中的资源的存储形式有:
(1).txt :它以嵌入资源(BuildAction:Embed Resource)的形式添加到Assembly,只支持字符串类型。
优点:适合保存大量类型单一的数据 ex:新闻的正文
缺点:容易被修改,读取数据麻烦
操作数据:
System.IO.Stream str = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ResourceDemo.language.txt");
(2).resx :以嵌入资源的形式添加到Assembly中,支持多种类型;字符串,图像,声音.....
操作:
通过ResXResourceReader类读取
ex: ResXResourceReader reader = new ResXResourceReader(string.Format("{0}/{1}.resx", Server.MapPath("."), Session["culture"].ToString()));
IDictionaryEnumerator dic = reader.GetEnumerator();
while (dic.MoveNext())
{
Response.Write(dic.Value);
}
(3).resource: 资源形式添加到Assembly中。通过ResourceManager访问
按照asp.net中资源的作用域分为:
(1)全局资源(App_GlobalResources):在整个站点中都能共享的资源
访问方法:
(1)) 全局资源在App_GlobalResources文件夹中,asp.net运行时会为每个资源文件生成一个强类型化的类,这些类在Resources命名空间下。
资源中的个key转化为类的属性。可以通过Resource.类名.key来访问资源
(2))在页面中也可以直接访问资源:<%$ Resource:资源名,key %>
(3))this.GetGlobalResourceObject("");
(2)本地资源(App_LocalResources):特定于某个页面或者某个小范围内共享的资源
本地资源要注意命名:本地资源的名称要与它提供给的目标的文件目录一致 ex:提供给default.aspx的资源文件名应为Default.aspx.resx
提供给default.aspx的法语资源文件名应为:Default.aspx.fr.resx
访问方法:
(1)) 通过编程方式
this.GetLocalResourceObject("");
(2)) <%$ Resource:key%>
(3)) 通过隐式声明语法访问:该方法只针对服务端控件,客户端通过添加runat=server来使用该语法规则
ex:<asp:Button id="Btn" runat="server" meta:resourceKey="Btn"/>
资源文件中:key:value--->Btn.Text:"确定"
meta:resourceKey将本地资源中的资源和控件进行绑定-->隐式声名性绑定语法
使用该语法时应确保 绑定到的控件具有资源文件中指定的属性(字符串应具有与 meta:resourcekey 属性定义的目标和属性的名称相匹配的名称)
在运行时 .net运行时会自动把在资源文件中指定的属性添加到相应的控件上
ex:资源文件中:btn.ForeColor="red" 会将id为btn的控件的ForeColor设置为Red颜色
全局资源不能使用隐式声名性语法
全局资源文件
在 App_GlobalResources文件夾中的文件,即是全局资源文件。App_GlobalResources 文件夹中的任何 .resx 文件都具有全局范围。
在右鍵方案->加入ASP.NET文件夾 中可以加入App_GlobalResources文件夾
可以用HttpContext.GetGlobalResourceObject方法讀取全局资源文件
本地资源文件
本地资源文件是只应用于一个 ASP.NET 页的文件(带有 .aspx、.ascx、.master 等扩展名的 ASP.NET 页)。
App_LocalResources 文件夹中文件為本地資源文件。
App_LocalResources 文件夹可以存在于应用程序的任何文件夹中,这与 App_GlobalResources 根文件夹不同。
通过资源文件名将一组资源文件与特定的网页相关联。
HttpContext.GetLocalResourceObject方法讀取本地资源文件