正在发生的事情是 ASP.net 正在调用Expression Builder。这里实际上发生的是,而不是 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 编译器无法处理将标记的内容与<%$ %>
标记中的属性中的任何其他文本连接起来。要么是错误,要么是设计使然。即你不会以ctl1.Text = ResourceExpressionBuilder.EvaluateExpression("ResourceFile, Resourcename") + "»"
.
您可以在 msdn 上阅读更多关于ResourceExpressionBuilder的信息,一般来说是ExpressionBuilder,或者如果您真的想阅读;在 我的 博客(3 部分)上实现本地化(数据库支持,因此我没有使用 ResourceExpressionBuilder )。