发生的情况是ASP.net正在调用表达式生成器。这里有效地发生的是,ASP.net编译器没有翻译您的:
<asp:AControlWithATextProperty runat="server" Text="Some Text">
收件人:
AControlWithATextProperty ctl1 = new AControlWithATextProperty();
ctl1.Text = "Some Text";
当它将.aspx
文件中的标记转换为.cs
与代码隐藏相结合的文件时,它实际上会执行类似的操作:
<asp:AControlWithATextProperty runat="server" Text="<%$ Resources:ResourceFile, ResourceName %>">
成为:
AControlWithATextProperty ctl1 = new AControlWithATextProperty();
ctl1.Text = ResourceExpressionBuilder.EvaluateExpression("ResourceFile, Resourcename");
asp.net编译器似乎无法处理连接<code><;%$%的内容>代码>标记,其中包含来自标记的属性中的任何其他文本。要么是错误,要么是故意的。即您最终不会得到ctl1.Text=ResourceExpressionBuilder.EvaluateExpression(“ResourceFile,Resourcename”)+“&;raquo;”
。
您可以阅读有关ResourceExpressionBuilder在msdn上,ExpressionBuilder一般来说,或者如果您真的想这样做的话;一个用于本地化的实现(数据库支持,因此我没有使用ResourceExpressionBuilder)关于我的博客(3部分)。